Mélanger une liste
Fait partie de la section Logique & Flux du Journey Dart de Coddy — leçon 8 sur 65.
Lorsque vous avez besoin de randomiser l'ordre des éléments dans une liste, Dart fournit la méthode shuffle(). Cette méthode réorganise tous les éléments de la liste de manière aléatoire, créant un ordre imprévisible qui est parfait pour les jeux, les simulations ou toute situation où vous avez besoin d'arrangements aléatoires.
La méthode shuffle() modifie directement la liste originale, en changeant aléatoirement les positions de tous les éléments. Chaque fois que vous appelez shuffle(), vous obtiendrez une disposition différente des mêmes éléments.
List<String> cards = ['Ace', 'King', 'Queen', 'Jack'];
print('Original: $cards'); // [Ace, King, Queen, Jack]
cards.shuffle();
print('Shuffled: $cards'); // [Queen, Ace, Jack, King] (ordre aléatoire)Cette méthode est particulièrement utile pour créer des jeux de cartes, mélanger aléatoirement des questions de quiz, ou toute application où vous souhaitez présenter des éléments dans un ordre imprévisible. Comme shuffle() fonctionne sur place, vous n'avez pas besoin de créer une nouvelle liste - la liste existante est réorganisée de manière aléatoire pour vous.
Défi
FacileCréez un programme qui gère un tableau de tournoi de jeu en mélangeant les équipes pour des affrontements aléatoires. Votre programme doit :
- Lire une chaîne de caractères en entrée représentant le nom du tournoi (cette valeur est lue mais pas affichée)
- Lire plusieurs chaînes de caractères en entrée représentant les noms des équipes (la saisie s'arrête lorsqu'une chaîne vide est reçue)
- Mélanger les équipes dans un ordre aléatoire
- Afficher chaque nom d'équipe sur une ligne distincte
Par exemple, si le nom du tournoi est "Local Cup" et que les équipes sont "Wolves", "Hawks", votre programme doit afficher les noms des équipes dans un ordre mélangé (aléatoire), un par ligne :
Hawks
WolvesOu :
Wolves
HawksPuisque shuffle() rend l'ordre aléatoire, n'importe quel agencement des équipes est valide.
Aide-mémoire
La méthode shuffle() réorganise aléatoirement l'ordre des éléments dans une liste :
List<String> cards = ['Ace', 'King', 'Queen', 'Jack'];
print('Original: $cards'); // [Ace, King, Queen, Jack]
cards.shuffle();
print('Shuffled: $cards'); // [Queen, Ace, Jack, King] (ordre aléatoire)La méthode shuffle() modifie directement la liste originale et crée un agencement aléatoire différent à chaque fois qu'elle est appelée.
Essayez vous-même
import 'dart:io';
void main() {
// Lire le nom du tournoi
String? tournamentName = stdin.readLineSync();
// Lire les noms des équipes jusqu'à une chaîne vide
List<String> teams = [];
String? teamName;
while ((teamName = stdin.readLineSync()) != null && teamName!.isNotEmpty) {
teams.add(teamName);
}
// TODO: Mélanger la liste des équipes pour des confrontations aléatoires
// Afficher chaque équipe sur une ligne séparée
for (String team in teams) {
print(team);
}
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Manipulation avancée des listes
Propriétés de liste : first & lastÉtat de la liste : isEmpty & isNotEmptyInverser une listeAjouter à une liste : insertSuppression dans une liste : removeWhereRechercher dans une liste : indexOfTrier une listeMélanger une listeRécapitulatif - Organisateur de liste4Manipulation avancée des Maps
Itérer sur une MapVérifier les clés et les valeursPropriétés de Map : keys & valuesAjout conditionnel : putIfAbsentSupprimer des entrées d'une MapMaps imbriquéesRécapitulatif - Mise à jour de l'inventaire2Opérations fonctionnelles sur les listes
Transformer avec 'map'Filtrer avec 'where'Utiliser '.toList()'Vérifier des conditions avec 'any'Conditions avec 'every'Trouver avec 'firstWhere'Récapitulatif - Filtrage de données3Les Ensembles
Qu'est-ce qu'un ensemble ?Créer un ensembleAjouter et supprimer des éléments d'un ensembleVérifier la présence d'éléments dans un ensembleConvertir une liste en ensembleUnion d'ensemblesIntersection d'ensemblesDifférence d'ensemblesRécapitulatif - Liste d'invités uniques