Différence d’ensembles
Fait partie de la section Logique et flux d’exécution du Journey GDScript de Coddy. Leçon 35 sur 78.
La différence de deux ensembles contient les éléments du premier ensemble qui ne se trouvent pas dans le second. Parcours le premier ensemble et conserve les éléments absents du second :
var needed := {"rope": true, "torch": true, "map": true}
var packed := {"torch": true, "apple": true}
var missing := {}
for item in needed:
if not packed.has(item):
missing[item] = true
print(missing.keys()) # ["rope", "map"]L’ordre des ensembles compte. La différence entre packed et needed est ["apple"] : ce que tu as emporté mais dont tu n’avais pas besoin.
Les deux différences réunies forment la différence symétrique : les éléments qui appartiennent à exactement l’un des ensembles. Ici, il s’agit de rope, map et apple.
Pour vérifier qu’il ne manque rien, has_all() prend un tableau et renvoie true lorsque chaque élément de celui-ci est une clé du dictionnaire :
print(packed.has_all(needed.keys())) # false : il manque la corde et la carteDéfi
FacileAvant un voyage, tu compares ce dont tu as besoin avec ce que tu as emballé. Le programme lit deux lignes, les éléments nécessaires et les éléments emballés, séparés par des espaces, et le code de départ construit les ensembles needed et packed.
Affiche deux lignes, avec les éléments joints par , :
Missing:suivi des éléments nécessaires qui ne sont pas emballésExtra:suivi des éléments emballés qui ne sont pas nécessaires
Conserve l’ordre de l’ensemble sur lequel tu itères. Affiche none plutôt qu’une liste vide. Pour l’entrée :
rope torch map
torch applela sortie est :
Missing: rope, map
Extra: appleEssayez vous-même
extends Node
func _ready():
var needed := {}
for item in OS.read_string_from_stdin().split(" ", false):
needed[item] = true
var packed := {}
for item in OS.read_string_from_stdin().split(" ", false):
packed[item] = true
# Calcule les deux différences
# Affiche les résultats
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et flux d’exécution
1Les chaînes de caractères en profondeur
Méthodes des chaînesRechercher dans les chaînesRemplacer et supprimer les espacesDécouper et joindreRécapitulatif - Vérifier un nom d’utilisateur4Dictionnaires, partie 2
Dictionnaires imbriquésTableaux de dictionnairesFusionner des dictionnairesCopier des dictionnairesRécapitulatif - Compteur de fréquence7Énumérations
Qu’est-ce qu’une énumération ?Définir une énumérationValeurs d’une énumérationÉnumérations avec matchRécapitulatif - Feu de circulation10Fonctions avancées
Renvoyer plusieurs valeursFonctions lambda, partie 1Fonctions lambda, partie 2Récapitulatif - Tri avec lambdaFonctions récursives, partie 1Fonctions récursives, partie 2Récapitulatif - Somme d’un tableau imbriqué13Système de gestion des stocks
Présentation du projetAjouter un article2Prise de décision avancée
Correspondance avec des variablesGardes de correspondanceMotifs de tableauMotifs de dictionnaireVérifications d’appartenanceRécapitulatif – Analyseur de commandes5Application de carnet d’adresses
Afficher le menuAjouter un contact8Gestionnaire des dossiers étudiants
Aperçu du projetAjouter un étudiant3Tableaux multidimensionnels
Bases des tableaux 2DAccéder aux éléments d’un tableau 2DBoucles imbriquées avec des tableaux 2DRécapitulatif - Tableaux 2DTableaux irréguliersMotifs courants des tableaux 2DRécapitulatif - Plateau de jeu6Les ensembles avec les dictionnaires
Qu’est-ce qu’un ensemble ?Un dictionnaire comme ensembleAjouter et supprimerUnion et intersectionDifférence d’ensemblesRécapitulatif – Supprimer les doublons9Agrégation avancée de données
Additionner des valeursTrouver le minimum et le maximumTri personnaliséRécapitulatif - Trieur de dictionnairesEntraînez-vous par vous-même : Compilateur GDScript en ligne