Menu
Coddy logo textTech

Embaralhando uma Lista

Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 8 de 65.

Quando você precisa randomizar a ordem dos elementos em uma lista, o Dart fornece o método shuffle(). Este método rearranja todos os elementos na lista aleatoriamente, criando uma ordem imprevisível que é perfeita para jogos, simulações ou qualquer situação onde você precise de arranjos aleatórios.

O método shuffle() modifica a lista original diretamente, alterando as posições de todos os elementos aleatoriamente. Cada vez que você chama shuffle(), você obterá uma disposição diferente dos mesmos elementos.

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

cards.shuffle();
print('Shuffled: $cards');  // [Queen, Ace, Jack, King] (ordem aleatória)

Este método é particularmente útil para criar jogos de cartas, randomizar perguntas de quiz ou qualquer aplicação onde você queira apresentar itens em uma sequência imprevisível. Como o shuffle() funciona in-place, você não precisa criar uma nova lista - a lista existente é reorganizada aleatoriamente para você.

challenge icon

Desafio

Fácil

Crie um programa que gerencie uma chave de torneio de jogos embaralhando as equipes em confrontos aleatórios. Seu programa deve:

  1. Ler uma entrada de string representando o nome do torneio (este valor é lido, mas não impresso)
  2. Ler múltiplas entradas de string representando os nomes das equipes (a entrada termina quando uma string vazia é recebida)
  3. Embaralhar as equipes em uma ordem aleatória
  4. Imprimir cada nome de equipe em uma linha separada

Por exemplo, se o nome do torneio for "Local Cup" e as equipes forem "Wolves", "Hawks", seu programa deve gerar os nomes das equipes em uma ordem embaralhada (aleatória), um por linha:

Hawks
Wolves

Ou:

Wolves
Hawks

Como shuffle() randomiza a ordem, qualquer arranjo das equipes é válido.

Folha de consulta

O método shuffle() randomiza a ordem dos elementos em uma lista:

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

cards.shuffle();
print('Shuffled: $cards');  // [Queen, Ace, Jack, King] (ordem aleatória)

O método shuffle() modifica a lista original diretamente e cria um arranjo aleatório diferente cada vez que é chamado.

Experimente você mesmo

import 'dart:io';

void main() {
  // Ler o nome do torneio
  String? tournamentName = stdin.readLineSync();
  
  // Ler os nomes das equipes até encontrar uma string vazia
  List<String> teams = [];
  String? teamName;
  while ((teamName = stdin.readLineSync()) != null && teamName!.isNotEmpty) {
    teams.add(teamName);
  }
  
  // TODO: Embaralhar a lista de equipes para confrontos aleatórios

  // Imprimir cada equipe em uma linha separada
  for (String team in teams) {
    print(team);
  }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo