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.
Sfida
FacileCrea un programma che gestisca il tabellone di un torneo di gioco mescolando le squadre in accoppiamenti casuali. Il tuo programma deve:
- Leggere una stringa in input che rappresenta il nome del torneo (questo valore viene letto ma non stampato)
- Leggere più stringhe in input che rappresentano i nomi delle squadre (l'input termina quando viene ricevuta una stringa vuota)
- Mescolare le squadre in un ordine casuale
- 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
WolvesOppure:
Wolves
HawksPoiché 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);
}
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Manipolazione avanzata delle liste
Proprietà delle liste: primo e ultimoStato della lista: isEmpty e isNotEmpInvertire una listaAggiungere a una lista: insertRimozione dalla lista: removeWhereRicerca in una lista: indexOfOrdinare una listaMescolare una listaRiepilogo - Organizzatore di liste4Manipolazione avanzata delle mappe
Iterare su una mappaVerificare chiavi e valoriProprietà delle mappe: chiavi e valoriAggiunta condizionale: putIfAbsentRimuovere elementi da una mappaMappe annidateRiepilogo - Aggiornamento dell'inventario2Operazioni funzionali sulle liste
Trasformare con 'map'Filtrare con 'where'Usare '.toList()'Verificare condizioni con 'any'Condizioni con 'every'Trovare con 'firstWhere'Riepilogo - Filtraggio dei dati3Insiemi
Che cos'è un insieme?Creare un insiemeAggiungere e rimuovere elementi dagli insiemiVerificare la presenza di elementi in un insiemeConvertire una lista in un insiemeUnione di insiemiIntersezione di insiemiDifferenza tra insiemiRiepilogo - Lista degli ospiti uniciEsercitati da solo: Compilatore Dart online