در روبی یک متد بنویسید که یک آرایه از هشها با کلیدهای :name و :score میگیرد، آنها را بر اساس :score به صورت نزولی مرتب کند و سپس بهترین N نفر را به صورت آرایهای از نامها برگرداند.
5.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:26 0.0
برای حل این مسأله از توابع Enumerable در روبی مثل sort_by، reverse، map یا متد مفید max_by(n) استفاده کنید؛ مثلاً میتوانید آرایه را با sort_by { |h| -h[:score] } مرتب کنید یا sort_by { |h| h[:score] }.reverse کرده و سپس first(N) را گرفته و با map { |h| h[:name] } فقط نامها را بازگردانید. نکات: کنترل کنید N بزرگتر از طول آرایه نشود، کلیدها ممکن است سمبل یا رشته باشند (h[:score] یا h['score']) و برای خوانایی و کارایی max_by(N) را مد نظر قرار دهید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای بدست آوردن بهترین N نفر از آرایهای از هشها با کلیدهای :name و :score از max_by(n) استفاده کنید تا تنها N عنصر با بالاترین امتیاز را بیابید. مقدار امتیاز را میتوانید به صورت h[:score] یا h['score'] بخوانید (با در نظر گرفتن هر دو سازگاری). خروجی را با map به نامها تبدیل کنید و N را با [n, arr.length].min محدود کنید تا از داشتن N بزرگتر از طول آرایه جلوگیری شود. max_by(n) برای کارایی بهتر، مرتبسازی کامل آرایه را انجام نمیدهد و مناسب استفاده در این سناریو است.
گزارش