Menu
Coddy logo textTech

Mieszanie elementów listy

Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 8 z 65.

Gdy chcesz losowo zmienić kolejność elementów na liście, Dart udostępnia metodę shuffle(). Ta metoda losowo przestawia wszystkie elementy na liście, tworząc nieprzewidywalną kolejność, idealną do gier, symulacji lub każdej sytuacji, w której potrzebujesz losowego ułożenia elementów.

Metoda shuffle() modyfikuje bezpośrednio oryginalną listę, losowo zmieniając pozycje wszystkich elementów. Za każdym razem, gdy wywołasz shuffle(), otrzymasz inne rozmieszczenie tych samych elementów.

List<String> cards = ['Ace', 'King', 'Queen', 'Jack'];
print('Original: $cards');  // [Ace, King, Queen, Jack]

cards.shuffle();
print('Shuffled: $cards');  // [Queen, Ace, Jack, King] (losowa kolejność)

Ta metoda jest szczególnie przydatna do tworzenia gier karcianych, losowego dobierania pytań quizowych lub w każdej aplikacji, w której chcesz prezentować elementy w nieprzewidywalnej kolejności. Ponieważ shuffle() działa w miejscu, nie musisz tworzyć nowej listy — istniejąca lista zostanie losowo uporządkowana.

challenge icon

Wyzwanie

Łatwy

Utwórz program, który zarządza drabinką turniejową, losowo mieszając drużyny w pary meczowe. Twój program powinien:

  1. Wczytać ciąg znaków reprezentujący nazwę turnieju (ta wartość jest wczytywana, ale nie jest wyświetlana)
  2. Wczytać wiele ciągów znaków reprezentujących nazwy drużyn (wczytywanie kończy się po otrzymaniu pustego ciągu znaków)
  3. Losowo przetasować drużyny
  4. Wyświetlić nazwę każdej drużyny w osobnym wierszu

Na przykład, jeśli nazwa turnieju to "Local Cup", a drużyny to "Wolves", "Hawks", Twój program powinien wyświetlić nazwy drużyn w losowej kolejności, po jednej w każdym wierszu:

Hawks
Wolves

Lub:

Wolves
Hawks

Ponieważ shuffle() losowo zmienia kolejność, dowolne ustawienie drużyn jest prawidłowe.

Spróbuj swoich sił

import 'dart:io';

void main() {
  // Wczytaj nazwę turnieju
  String? tournamentName = stdin.readLineSync();
  
  // Wczytuj nazwy drużyn aż do napotkania pustego ciągu znaków
  List<String> teams = [];
  String? teamName;
  while ((teamName = stdin.readLineSync()) != null && teamName!.isNotEmpty) {
    teams.add(teamName);
  }
  
  // TODO: Przetasuj listę teams, aby losowo dobrać przeciwników

  // Wypisz każdą drużynę w osobnym wierszu
  for (String team in teams) {
    print(team);
  }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator Dart online