الدرس 3 من 10
دوال مكتبة table
- 13 دقيقة
- 5 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
إدراج وحذف ووصل وترتيب
الشرح
مكتبة table فيها ما تحتاجه لإدارة قائمة. table.insert(t, pos, v) تضع القيمة في الموضع pos وتزيح ما بعده خطوة، وtable.remove(t, pos) تُخرج العنصر وتُرجعه وتسدّ مكانه بما بعده. وبلا pos تعمل الاثنتان على آخر القائمة.
وtable.concat(t, ", ") تصل العناصر في نصّ واحد، ولا تقبل إلا النصوص والأرقام، فاجمع الأسماء في قائمة قبل وصلها. وtable.sort(t, less) ترتّب القائمة في مكانها، وless(a, b) تجيب عن سؤال واحد: هل يأتي a قبل b؟ ولا تحفظ table.sort ترتيب المتساويين، فإن أردته ثابتًا فأعطِ التعادل مفتاحًا ثانيًا.
والفخّ: >= في المقارِن. للعنصرين المتساويين يجب أن يُرجع false في الاتجاهين، و>= يُرجع true، فترمي table.sort الخطأ invalid order function for sorting أو تخلط الترتيب بصمت. المقارِن الصحيح صارم: > أو <.
المطلوب
لدور القتال اكتب: sortBySpeed(list) ترتّب الأسرع أولًا، والمتساويين في speed بـ name تصاعديًّا؛ وrush(list, unit) تضع الوحدة أول الدور؛ وnextTurn(list) تُخرج الأولى وتُرجعها؛ وturnOrder(list) تُرجع الأسماء موصولة بـ ", ".
معايير التصحيح
5 معايير- sortBySpeed تقدّم الأسرع
- والمتساويان بالاسم تصاعديًّا
- rush تضع الوحدة أول الدور
- nextTurn تُخرج الأولى وتُرجعها
- turnOrder تصل الأسماء بفاصلة