Menu
Coddy logo textTech

Prüfen auf Elemente in einem Set

Teil des Abschnitts Logik & Ablauf der Dart-Journey von Coddy. Lektion 20 von 65.

Wenn Sie mit einem Set arbeiten, müssen Sie häufig prüfen, ob ein bestimmtes Element in der Sammlung vorhanden ist. Die Methode contains() bietet eine einfache und effiziente Möglichkeit, diese Prüfung durchzuführen, und gibt true zurück, wenn das Element gefunden wird, und false, wenn dies nicht der Fall ist.

Einer der Hauptvorteile der Verwendung von contains() mit einem Set ist seine außergewöhnliche Performance. Im Gegensatz zur Suche in einer List, bei der jedes Element einzeln geprüft werden muss, sind Set-Operationen für schnelle Suchvorgänge optimiert, was contains() auch bei großen Sammlungen sehr effizient macht.

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

// Prüfen, ob bestimmte Zutaten verfügbar sind
bool hasFlour = ingredients.contains('flour');
bool hasMilk = ingredients.contains('milk');

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

Diese Methode ist besonders nützlich, wenn Sie Daten validieren, Voraussetzungen prüfen oder Informationen basierend auf der Zugehörigkeit zu einer bestimmten Sammlung filtern müssen. Das boolesche Ergebnis macht sie perfekt für die Verwendung in bedingten Anweisungen und logischen Operationen.

challenge icon

Aufgabe

Einfach

Erstelle ein Programm, das ein Rezeptvalidierungssystem verwaltet, indem es überprüft, ob bestimmte Zutaten in der Küchenvorratskammer verfügbar sind. Dein Programm sollte:

  1. Eine Zeichenketteneingabe lesen, die den Rezeptnamen darstellt
  2. Mehrere Zeichenketteneingaben lesen, die verfügbare Zutaten in der Vorratskammer darstellen (die Eingabe endet, sobald du "pantry_done" erhältst)
  3. Mehrere Zeichenketteneingaben lesen, die für das Rezept benötigte Zutaten darstellen (die Eingabe endet, sobald du "recipe_done" erhältst)
  4. Ein Set mit den verfügbaren Zutaten aus der Vorratskammer erstellen
  5. Die Methode contains() verwenden, um zu überprüfen, ob jede benötigte Zutat in der Vorratskammer verfügbar ist
  6. Die Ergebnisse der Rezeptvalidierung im unten genau angegebenen Format ausgeben

Wenn der Rezeptname beispielsweise "Chocolate Chip Cookies" lautet, die Zutaten in der Vorratskammer "flour", "sugar", "eggs", "butter", "vanilla" sind und die benötigten Zutaten "flour", "sugar", "chocolate chips", "butter" lauten, sollte dein Programm Folgendes ausgeben:

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)

Wenn der Rezeptname "Scrambled Eggs" lautet, die Zutaten in der Vorratskammer "eggs", "butter", "salt", "pepper" sind und die benötigten Zutaten "eggs", "butter", "salt" lauten, sollte dein Programm Folgendes ausgeben:

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

Wenn der Rezeptname "Fruit Salad" lautet, die Zutaten in der Vorratskammer "apples", "bananas" sind und die benötigten Zutaten "apples", "oranges", "grapes", "honey" lauten, sollte dein Programm Folgendes ausgeben:

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)

Dein Programm muss die Methode contains() verwenden, um jede benötigte Zutat mit dem Set der Vorratskammer zu vergleichen. Speichere die benötigten Zutaten in einer Liste, um die Reihenfolge für die Überprüfung beizubehalten, und sammle alle fehlenden Zutaten in einer separaten Liste. Wenn alle Zutaten verfügbar sind, zeige „Bereit zum Kochen – alle Zutaten verfügbar“ als Status an. Wenn Zutaten fehlen, zeige „Rezept kann nicht zubereitet werden – X Zutat(en) fehlen“ an, wobei X die Anzahl der fehlenden Zutaten ist.

Probier es selbst

import 'dart:io';

void main() {
  // Rezeptnamen lesen
  String? recipeName = stdin.readLineSync();
  
  // Vorratszutaten lesen bis "pantry_done"
  Set<String> pantryIngredients = <String>{};
  String? pantryInput;
  while ((pantryInput = stdin.readLineSync()) != "pantry_done") {
    if (pantryInput != null) {
      pantryIngredients.add(pantryInput);
    }
  }
  
  // Erforderliche Zutaten lesen bis "recipe_done"
  List<String> requiredIngredients = <String>[];
  String? recipeInput;
  while ((recipeInput = stdin.readLineSync()) != "recipe_done") {
    if (recipeInput != null) {
      requiredIngredients.add(recipeInput);
    }
  }
  
  // TODO: Schreiben Sie Ihren Code unten
  // Verwenden Sie pantryIngredients.contains(), um jede erforderliche Zutat zu prüfen
  // Erstellen Sie eine Liste, um fehlende Zutaten zu speichern
  // Prüfen Sie die Verfügbarkeit und geben Sie die Ergebnisse im erforderlichen Format aus
  
  // Ergebnisse ausgeben (durch Ihre Implementierung ersetzen)
  print("Recipe: $recipeName");
  print("Pantry ingredients: $pantryIngredients");
  print("Required ingredients: $requiredIngredients");
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-Dart-Compiler