Menu
CoddyTech

Mengacak list

Termasuk bagian Logika dan Alur dalam perjalanan Dart di Coddy. Pelajaran 8 dari 65.

Saat kamu perlu mengacak urutan elemen dalam list, Dart menyediakan method shuffle(). Method ini menyusun ulang semua elemen dalam list secara acak, sehingga menghasilkan urutan yang tidak dapat diprediksi dan cocok untuk game, simulasi, atau situasi apa pun yang memerlukan susunan acak.

method shuffle() mengubah list asli secara langsung dengan mengacak posisi semua elemennya. Setiap kali kamu memanggil shuffle(), kamu akan mendapatkan susunan berbeda dari elemen yang sama.

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

cards.shuffle();
print('Shuffled: $cards');  // [Queen, Ace, Jack, King] (urutan acak)

method ini sangat berguna untuk membuat permainan kartu, mengacak pertanyaan kuis, atau aplikasi apa pun yang menampilkan item dalam urutan yang tidak dapat diprediksi. Karena shuffle() mengubah list secara langsung, kamu tidak perlu membuat list baru: list yang sudah ada akan diacak untukmu.

challenge icon

Tantangan

Mudah

Buat program yang mengelola bagan turnamen dengan mengacak tim ke dalam pertandingan secara acak. Programmu harus:

  1. Membaca input string yang menunjukkan nama turnamen (nilai ini dibaca, tetapi tidak dicetak)
  2. Membaca beberapa input string yang menunjukkan nama tim (input berakhir saat menerima string kosong)
  3. Mengacak urutan tim
  4. Mencetak setiap nama tim pada baris terpisah

Misalnya, jika nama turnamennya adalah "Local Cup" dan timnya adalah "Wolves", "Hawks", programmu harus menampilkan nama-nama tim dalam urutan acak, satu nama per baris:

Hawks
Wolves

Atau:

Wolves
Hawks

Karena shuffle() mengacak urutan, susunan tim apa pun dianggap valid.

Coba sendiri

import 'dart:io';

void main() {
  // Baca nama turnamen
  String? tournamentName = stdin.readLineSync();
  
  // Baca nama tim hingga menemukan string kosong
  List<String> teams = [];
  String? teamName;
  while ((teamName = stdin.readLineSync()) != null && teamName!.isNotEmpty) {
    teams.add(teamName);
  }
  
  // TODO: Acak list tim untuk menentukan pasangan pertandingan secara acak

  // Cetak setiap tim pada baris terpisah
  for (String team in teams) {
    print(team);
  }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Dart online