Menu
Coddy logo textTech

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.

challenge icon

Desafío

Fácil

Crea un programa que gestione el cuadro de un torneo de juegos barajando los equipos en enfrentamientos aleatorios. Tu programa debe:

  1. Leer una entrada de cadena que represente el nombre del torneo (este valor se lee pero no se imprime)
  2. Leer múltiples entradas de cadena que representen los nombres de los equipos (la entrada termina cuando se recibe una cadena vacía)
  3. Barajar los equipos en un orden aleatorio
  4. 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
Wolves

O:

Wolves
Hawks

Dado 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);
  }
}
quiz iconPonte a prueba

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