Menu
Coddy logo textTech

ערבוב רשימה

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 8 מתוך 65.

כשצריך לסדר את הפריטים ברשימה בסדר אקראי, Dart מספקת את המתודה shuffle(). המתודה הזאת מסדרת מחדש את כל הפריטים ברשימה באופן אקראי, ויוצרת סדר בלתי צפוי שמתאים למשחקים, לסימולציות או לכל מצב שבו צריך סידור אקראי.

השיטה shuffle() משנה ישירות את הרשימה המקורית, ומחליפה את המיקומים של כל האיברים באופן אקראי. בכל פעם שתקרא ל-shuffle(), תקבל סידור שונה של אותם איברים.

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

cards.shuffle();
print('Shuffled: $cards');  // [Queen, Ace, Jack, King] (סדר אקראי)

השיטה הזו שימושית במיוחד ליצירת משחקי קלפים, לערבוב שאלות בחידונים או לכל יישום שבו רוצים להציג פריטים בסדר בלתי צפוי. מכיוון ש־shuffle() פועלת במקום, אין צורך ליצור רשימה חדשה - הרשימה הקיימת מסודרת מחדש באופן אקראי עבורך.

challenge icon

אתגר

קל

צרו תוכנית שמנהלת טבלת משחקים של טורניר באמצעות ערבוב הקבוצות ליצירת משחקים אקראיים. התוכנית שלכם צריכה:

  1. לקרוא קלט מסוג מחרוזת שמייצג את שם הטורניר (הערך הזה נקרא אך לא מודפס)
  2. לקרוא כמה קלטים מסוג מחרוזת שמייצגים את שמות הקבוצות (הקלט מסתיים כשמתקבלת מחרוזת ריקה)
  3. לערבב את הקבוצות בסדר אקראי
  4. להדפיס את שם כל קבוצה בשורה נפרדת

לדוגמה, אם שם הטורניר הוא "Local Cup" ושמות הקבוצות הם "Wolves", "Hawks", התוכנית שלכם צריכה להציג את שמות הקבוצות בסדר מעורבב (אקראי), שם אחד בכל שורה:

Hawks
Wolves

או:

Wolves
Hawks

מכיוון ש-shuffle() מסדרת את הקבוצות בסדר אקראי, כל סדר של הקבוצות הוא תקין.

נסו בעצמכם

import 'dart:io';

void main() {
  // קרא את שם הטורניר
  String? tournamentName = stdin.readLineSync();
  
  // קרא את שמות הקבוצות עד למחרוזת ריקה
  List<String> teams = [];
  String? teamName;
  while ((teamName = stdin.readLineSync()) != null && teamName!.isNotEmpty) {
    teams.add(teamName);
  }
  
  // TODO: ערבב את רשימת teams כדי ליצור משחקים אקראיים

  // הדפס כל קבוצה בשורה נפרדת
  for (String team in teams) {
    print(team);
  }
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת התוכנית

תרגלו בעצמכם: קומפיילר Dart אונליין