Menu
Coddy logo textTech

Vérifier la présence d'éléments dans un ensemble

Fait partie de la section Logique & Flux du Journey Dart de Coddy — leçon 20 sur 65.

Lorsque vous travaillez avec un Set, vous aurez souvent besoin de vérifier si un élément spécifique existe dans la collection. La méthode contains() fournit un moyen simple et efficace d'effectuer cette vérification, renvoyant true si l'élément est trouvé et false s'il ne l'est pas.

L'un des principaux avantages de l'utilisation de contains() avec un Set est sa performance exceptionnelle. Contrairement à la recherche dans une List où chaque élément pourrait devoir être vérifié un par un, les opérations de Set sont optimisées pour des recherches rapides, rendant contains() très efficace même avec de grandes collections.

Set<String> ingredients = {'flour', 'sugar', 'eggs', 'butter'};

// Vérifier si des ingrédients spécifiques sont disponibles
bool hasFlour = ingredients.contains('flour');
bool hasMilk = ingredients.contains('milk');

print(hasFlour);  // true
print(hasMilk);   // false

Cette méthode est particulièrement utile lorsque vous devez valider des données, vérifier des prérequis ou filtrer des informations en fonction de l'appartenance à une collection spécifique. Le résultat booléen le rend parfait pour une utilisation dans des instructions conditionnelles et des opérations logiques.

challenge icon

Défi

Facile

Créez un programme qui gère un système de validation de recettes en vérifiant si des ingrédients spécifiques sont disponibles dans le garde-manger de la cuisine. Votre programme doit :

  1. Lire une chaîne de caractères en entrée représentant le nom de la recette
  2. Lire plusieurs chaînes de caractères représentant les ingrédients disponibles dans le garde-manger (la saisie se terminera lorsque vous recevrez "pantry_done")
  3. Lire plusieurs chaînes de caractères représentant les ingrédients requis pour la recette (la saisie se terminera lorsque vous recevrez "recipe_done")
  4. Créer un Set avec les ingrédients disponibles dans le garde-manger
  5. Utiliser la méthode contains() pour vérifier si chaque ingrédient requis est disponible dans le garde-manger
  6. Afficher les résultats de la validation de la recette dans le format exact indiqué ci-dessous

Par exemple, si le nom de la recette est "Chocolate Chip Cookies", que les ingrédients du garde-manger sont "flour", "sugar", "eggs", "butter", "vanilla", et que les ingrédients requis sont "flour", "sugar", "chocolate chips", "butter", votre programme doit afficher :

Recipe: Chocolate Chip Cookies
Pantry ingredients: {flour, sugar, eggs, butter, vanilla}
Required ingredients: [flour, sugar, chocolate chips, butter]
Checking ingredient availability:
- flour: Available
- sugar: Available
- chocolate chips: Missing
- butter: Available
Missing ingredients: [chocolate chips]
Status: Cannot make recipe - missing 1 ingredient(s)

Si le nom de la recette est "Scrambled Eggs", que les ingrédients du garde-manger sont "eggs", "butter", "salt", "pepper", et que les ingrédients requis sont "eggs", "butter", "salt", votre programme doit afficher :

Recipe: Scrambled Eggs
Pantry ingredients: {eggs, butter, salt, pepper}
Required ingredients: [eggs, butter, salt]
Checking ingredient availability:
- eggs: Available
- butter: Available
- salt: Available
Missing ingredients: []
Status: Ready to cook - all ingredients available

Si le nom de la recette est "Fruit Salad", que les ingrédients du garde-manger sont "apples", "bananas", et que les ingrédients requis sont "apples", "oranges", "grapes", "honey", votre programme doit afficher :

Recipe: Fruit Salad
Pantry ingredients: {apples, bananas}
Required ingredients: [apples, oranges, grapes, honey]
Checking ingredient availability:
- apples: Available
- oranges: Missing
- grapes: Missing
- honey: Missing
Missing ingredients: [oranges, grapes, honey]
Status: Cannot make recipe - missing 3 ingredient(s)

Votre programme doit utiliser la méthode contains() pour vérifier chaque ingrédient requis par rapport au Set du garde-manger. Stockez les ingrédients requis dans une liste pour maintenir l'ordre de vérification, et collectez tous les ingrédients manquants dans une liste séparée. Si tous les ingrédients sont disponibles, affichez "Ready to cook - all ingredients available" comme statut. Si des ingrédients manquent, affichez "Cannot make recipe - missing X ingredient(s)" où X est le nombre d'ingrédients manquants.

Aide-mémoire

Utilisez la méthode contains() pour vérifier si un élément spécifique existe dans un Set. Elle renvoie true si l'élément est trouvé et false s'il ne l'est pas :

Set<String> ingredients = {'flour', 'sugar', 'eggs', 'butter'};

bool hasFlour = ingredients.contains('flour');
bool hasMilk = ingredients.contains('milk');

print(hasFlour);  // true
print(hasMilk);   // false

La méthode contains() est très efficace avec les collections Set, ce qui la rend idéale pour des recherches rapides, même avec de grands ensembles de données. Elle est particulièrement utile pour la validation, la vérification des prérequis et les opérations conditionnelles.

Essayez vous-même

import 'dart:io';

void main() {
  // Lire le nom de la recette
  String? recipeName = stdin.readLineSync();
  
  // Lire les ingrédients du garde-manger jusqu'à "pantry_done"
  Set<String> pantryIngredients = <String>{};
  String? pantryInput;
  while ((pantryInput = stdin.readLineSync()) != "pantry_done") {
    if (pantryInput != null) {
      pantryIngredients.add(pantryInput);
    }
  }
  
  // Lire les ingrédients requis jusqu'à "recipe_done"
  List<String> requiredIngredients = <String>[];
  String? recipeInput;
  while ((recipeInput = stdin.readLineSync()) != "recipe_done") {
    if (recipeInput != null) {
      requiredIngredients.add(recipeInput);
    }
  }
  
  // TODO: Écrivez votre code ci-dessous
  // Utilisez pantryIngredients.contains() pour vérifier chaque ingrédient requis
  // Créez une liste pour stocker les ingrédients manquants
  // Vérifiez la disponibilité et affichez les résultats au format requis
  
  // Afficher les résultats (remplacez par votre implémentation)
  print("Recipe: $recipeName");
  print("Pantry ingredients: $pantryIngredients");
  print("Required ingredients: $requiredIngredients");
}
quiz iconTestez-vous

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 & Flux