Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

خلط القائمة

جزء من قسم Logic & Flow في رحلة 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() تجعل الترتيب عشوائيًا، فإن أي ترتيب للفرق يعتبر صحيحًا.

ورقة مرجعية

تقوم الطريقة 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() بتعديل القائمة الأصلية مباشرة وتنشئ ترتيبًا عشوائيًا مختلفًا في كل مرة يتم استدعاؤها فيها.

جرّب بنفسك

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: قم بتبديل قائمة الفرق عشوائياً للمواجهات العشوائية

  // طباعة كل فريق في سطر منفصل
  for (String team in teams) {
    print(team);
  }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow