Mezclar una lista
Parte de la sección Lógica y Flujo del Journey de Dart de Coddy — lección 8 de 65.
Cuando necesites aleatorizar el orden de los elementos en una lista, Dart proporciona el método shuffle(). Este método reorganiza todos los elementos de la lista de forma aleatoria, creando un orden impredecible que es perfecto para juegos, simulaciones o cualquier situación en la que necesites disposiciones aleatorias.
El método shuffle() modifica la lista original directamente, cambiando las posiciones de todos los elementos de forma aleatoria. Cada vez que llamas a shuffle(), obtendrás una disposición diferente de los mismos elementos.
List<String> cards = ['Ace', 'King', 'Queen', 'Jack'];
print('Original: $cards'); // [Ace, King, Queen, Jack]
cards.shuffle();
print('Shuffled: $cards'); // [Queen, Ace, Jack, King] (orden aleatorio)Este método es particularmente útil para crear juegos de cartas, aleatorizar preguntas de cuestionarios o cualquier aplicación en la que desees presentar elementos en una secuencia impredecible. Dado que shuffle() funciona in-place, no necesitas crear una nueva lista: la lista existente se reorganiza aleatoriamente por ti.
Desafío
FácilCrea un programa que gestione el cuadro de un torneo de juegos barajando los equipos en enfrentamientos aleatorios. Tu programa debe:
- Leer una entrada de cadena que represente el nombre del torneo (este valor se lee pero no se imprime)
- Leer múltiples entradas de cadena que representen los nombres de los equipos (la entrada termina cuando se recibe una cadena vacía)
- Barajar los equipos en un orden aleatorio
- Imprimir cada nombre de equipo en una línea separada
Por ejemplo, si el nombre del torneo es "Local Cup" y los equipos son "Wolves", "Hawks", tu programa debería mostrar los nombres de los equipos en un orden barajado (aleatorio), uno por línea:
Hawks
WolvesO:
Wolves
HawksDado que shuffle() aleatoriza el orden, cualquier disposición de los equipos es válida.
Hoja de referencia
El método shuffle() aleatoriza el orden de los elementos en una lista:
List<String> cards = ['Ace', 'King', 'Queen', 'Jack'];
print('Original: $cards'); // [Ace, King, Queen, Jack]
cards.shuffle();
print('Shuffled: $cards'); // [Queen, Ace, Jack, King] (orden aleatorio)El método shuffle() modifica la lista original directamente y crea una disposición aleatoria diferente cada vez que se llama.
Pruébalo tú mismo
import 'dart:io';
void main() {
// Leer el nombre del torneo
String? tournamentName = stdin.readLineSync();
// Leer los nombres de los equipos hasta encontrar una cadena vacía
List<String> teams = [];
String? teamName;
while ((teamName = stdin.readLineSync()) != null && teamName!.isNotEmpty) {
teams.add(teamName);
}
// TODO: Mezclar la lista de equipos para emparejamientos aleatorios
// Imprimir cada equipo en una línea separada
for (String team in teams) {
print(team);
}
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Manipulación avanzada de listas
Propiedades de listas: first y lastEstado de la lista: isEmpty y isNotEmptyInvertir una listaAñadir a una lista: insertEliminación en listas: removeWhereBúsqueda en una lista: indexOfOrdenar una listaMezclar una listaResumen - Organizador de listas4Manipulación avanzada de mapas
Iterar sobre un mapaComprobación de claves y valoresPropiedades del mapa: keys y valuesAdición condicional: putIfAbsentEliminar entradas de un mapaMapas anidadosResumen - Actualización de inventario2Operaciones funcionales con listas
Transformar con 'map'Filtrar con 'where'Uso de '.toList()'Comprobar condiciones con 'any'Condiciones con 'every'Búsqueda con 'firstWhere'Resumen - Filtrado de datos5Proyecto: Calculadora de carrito de compras
Configuración del proyectoAgregar artículos al carrito3Conjuntos
¿Qué es un Conjunto?Crear un ConjuntoAñadir y eliminar elementos de un ConjuntoComprobar elementos en un ConjuntoConvertir una lista en un ConjuntoUnión de ConjuntosIntersección de ConjuntosDiferencia de ConjuntosResumen - Lista de invitados única