Eine Liste mischen
Teil des Abschnitts Logik & Ablauf der Dart-Journey von Coddy — Lektion 8 von 65.
Wenn Sie die Reihenfolge der Elemente in einer Liste zufällig anordnen möchten, bietet Dart die Methode shuffle() an. Diese Methode ordnet alle Elemente in der Liste zufällig neu an und erzeugt so eine unvorhersehbare Reihenfolge, die perfekt für Spiele, Simulationen oder jede Situation geeignet ist, in der Sie zufällige Anordnungen benötigen.
Die Methode shuffle() modifiziert die ursprüngliche Liste direkt und ändert die Positionen aller Elemente zufällig. Jedes Mal, wenn Sie shuffle() aufrufen, erhalten Sie eine andere Anordnung derselben Elemente.
List<String> cards = ['Ace', 'King', 'Queen', 'Jack'];
print('Original: $cards'); // [Ace, King, Queen, Jack]
cards.shuffle();
print('Shuffled: $cards'); // [Queen, Ace, Jack, King] (zufällige Reihenfolge)Diese Methode ist besonders nützlich für die Erstellung von Kartenspielen, das Randomisieren von Quizfragen oder jede Anwendung, bei der Sie Elemente in einer unvorhersehbaren Reihenfolge präsentieren möchten. Da shuffle() direkt im Original (in place) arbeitet, müssen Sie keine neue Liste erstellen – die bestehende Liste wird für Sie zufällig neu organisiert.
Aufgabe
EinfachErstellen Sie ein Programm, das einen Spielturnier-Baum verwaltet, indem es Teams in zufällige Paarungen mischt. Ihr Programm sollte:
- Einen String-Input einlesen, der den Namen des Turniers darstellt (dieser Wert wird gelesen, aber nicht ausgegeben)
- Mehrere String-Inputs einlesen, die Teamnamen darstellen (die Eingabe endet, wenn ein leerer String empfangen wird)
- Die Teams in eine zufällige Reihenfolge mischen
- Jeden Teamnamen in einer separaten Zeile ausgeben
Wenn zum Beispiel der Turniername "Local Cup" ist und die Teams "Wolves", "Hawks" sind, sollte Ihr Programm die Teamnamen in einer gemischten (zufälligen) Reihenfolge ausgeben, einen pro Zeile:
Hawks
WolvesOder:
Wolves
HawksDa shuffle() die Reihenfolge zufällig festlegt, ist jede Anordnung der Teams gültig.
Spickzettel
Die shuffle() Methode randomisiert die Reihenfolge der Elemente in einer Liste:
List<String> cards = ['Ace', 'King', 'Queen', 'Jack'];
print('Original: $cards'); // [Ace, King, Queen, Jack]
cards.shuffle();
print('Shuffled: $cards'); // [Queen, Ace, Jack, King] (zufällige Reihenfolge)Die shuffle() Methode verändert die ursprüngliche Liste direkt und erzeugt bei jedem Aufruf eine andere zufällige Anordnung.
Probier es selbst
import 'dart:io';
void main() {
// Turniernamen lesen
String? tournamentName = stdin.readLineSync();
// Teamnamen lesen, bis eine leere Zeichenfolge eingegeben wird
List<String> teams = [];
String? teamName;
while ((teamName = stdin.readLineSync()) != null && teamName!.isNotEmpty) {
teams.add(teamName);
}
// TODO: Die Teamliste für zufällige Paarungen mischen
// Jedes Team in einer eigenen Zeile ausgeben
for (String team in teams) {
print(team);
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Fortgeschrittene Listenmanipulation
Listen-Eigenschaften: first & lastListen-Status: isEmpty & isNotEmptyEine Liste umkehrenHinzufügen zu einer Liste: insertElemente aus Liste entfernen: removeWhereSuchen in einer Liste: indexOfEine Liste sortierenEine Liste mischenZusammenfassung – Listen-Organizer4Fortgeschrittene Map-Manipulation
Über eine Map iterierenPrüfen auf Schlüssel und WerteMap-Eigenschaften: keys & valuesBedingtes Hinzufügen: putIfAbsentEinträge aus einer Map entfernenVerschachtelte MapsRückblick – Inventar-Update7Fortgeschrittene Funktionen
Anonyme FunktionenFunktionen als Argumente übergebenClosures verstehenEinführung in die RekursionRekursive Funktion: CountdownRekursive Funktion: FakultätZusammenfassung – List Processor10Abschluss-Herausforderungen
Herausforderung: NotensortiererHerausforderung: VokalzählerHerausforderung: FizzBuzz2Funktionale Listenoperationen
Transformieren mit 'map'Filtern mit 'where''.toList()' verwendenBedingungen prüfen mit 'any'Bedingungen mit 'every'Suchen mit 'firstWhere'Zusammenfassung – Datenfilterung3Sets
Was ist ein Set?Ein Set erstellenHinzufügen und Entfernen in SetsPrüfen auf Elemente in einem SetEine Liste in ein Set umwandelnSet-VereinigungSet-SchnittmengeSet-DifferenzRückblick – Einzigartige Gästeliste