✍️ نمایش چند نفر اول باید از جدول رتبهبندی کامل مشتق شود، نه از چند انتخاب مستقل که تساویها را متفاوت حل میکنند. ابتدا همه رکوردها را با دو قانون مرتب میکنیم، بعد به تعداد خواستهشده از ابتدای نتیجه برمیداریم. اینجا limit تعداد نتیجه است؛ با رتبه صفرمبنا یا شاخص آخر اشتباه نشود.
مثلاً اگر جدول نهایی نامهای ['مینا','آراد','سارا'] باشد، limit دو باید فقط دو نام اول را بدهد. اگر مینا و آراد در هر دو معیار برابرند، همان ترتیب ورودشان حفظ میشود؛ انتخاب برترینها نباید اسمشان را الفبایی کند. limit بزرگتر از تعداد افراد هم به معنی گرفتن همه است.
کد ناقص را طوری کامل کن که هر فراخوانی به تنهایی کار کند؛ تابعهای قبلی به صورت خودکار در محیط حاضر نیستند. در limit صفر یا منفی خروجی خالی بده؛ برش منفی در پایتون معنی دیگری دارد و خودش این قرارداد را اجرا نمیکند. خطای رایج، برش زدن ورودی قبل از مرتبسازی است؛ ممکن است فرد برتر اصلاً بیرون آن تکه باشد. اول رتبهبندی کامل را بساز و سپس خروجی محدودشده را برگردون.
تابع آماده course_check فقط برای ارزیابی است: تابع اصلی را صدا میزند و حفظ ورودی را بررسی میکند. آن را تغییر نده؛ پاسخ تو همان تابع خواستهشده است.
فعالیت شما
تابع top_players(players,limit) رکوردهای name رشته و solved/penalty صحیح نامنفی و limit صحیح میگیرد. با solved نزولی، penalty صعودی و تساوی کامل با ترتیب ورودی، نام حداکثر limit نفر اول را بده. limit<=0 برابر [] و limit بیشتر از طول یعنی همه؛ خالی [] و تکعضوی متناسب با limit. برای جدول نامهای ['مینا','آراد','سارا']، limit=2 دو نام اول است. هیچ ورودی را تغییر نده و مرتبسازی را در همین تابع انجام بده. تابع آماده course_check فقط برای ارزیابی است: تابع اصلی را صدا میزند و حفظ ورودی را بررسی میکند. آن را تغییر نده؛ پاسخ تو همان تابع خواستهشده است.