Menu
Coddy logo textTech

Mescolare una lista

Fa parte della sezione Logica e flusso del percorso Dart di Coddy. Lezione 8 di 65.

Quando devi randomizzare l’ordine degli elementi in una lista, Dart mette a disposizione il metodo shuffle(). Questo metodo riordina casualmente tutti gli elementi della lista, creando un ordine imprevedibile, perfetto per i giochi, le simulazioni o qualsiasi situazione in cui servano disposizioni casuali.

Il metodo shuffle() modifica direttamente la lista originale, cambiando casualmente le posizioni di tutti gli elementi. Ogni volta che chiami shuffle(), otterrai una disposizione diversa degli stessi elementi.

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

cards.shuffle();
print('Shuffled: $cards');  // [Queen, Ace, Jack, King] (ordine casuale)

Questo metodo è particolarmente utile per creare giochi di carte, randomizzare le domande dei quiz o qualsiasi applicazione in cui vuoi presentare gli elementi in una sequenza imprevedibile. Poiché shuffle() modifica la lista sul posto, non devi crearne una nuova: la lista esistente viene riorganizzata casualmente per te.

challenge icon

Sfida

Facile

Crea un programma che gestisca il tabellone di un torneo di gioco mescolando le squadre in accoppiamenti casuali. Il tuo programma deve:

  1. Leggere una stringa in input che rappresenta il nome del torneo (questo valore viene letto ma non stampato)
  2. Leggere più stringhe in input che rappresentano i nomi delle squadre (l'input termina quando viene ricevuta una stringa vuota)
  3. Mescolare le squadre in un ordine casuale
  4. Stampare il nome di ciascuna squadra su una riga separata

Ad esempio, se il nome del torneo è "Local Cup" e le squadre sono "Wolves", "Hawks", il tuo programma dovrebbe mostrare i nomi delle squadre in un ordine mescolato (casuale), uno per riga:

Hawks
Wolves

Oppure:

Wolves
Hawks

Poiché shuffle() randomizza l'ordine, qualsiasi disposizione delle squadre è valida.

Provalo tu

import 'dart:io';

void main() {
  // Leggi il nome del torneo
  String? tournamentName = stdin.readLineSync();
  
  // Leggi i nomi delle squadre fino a una stringa vuota
  List<String> teams = [];
  String? teamName;
  while ((teamName = stdin.readLineSync()) != null && teamName!.isNotEmpty) {
    teams.add(teamName);
  }
  
  // TODO: Mescola la lista teams per ottenere abbinamenti casuali

  // Stampa ogni squadra su una riga separata
  for (String team in teams) {
    print(team);
  }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Dart online