در روبی یک متد بنویسید که یک آرایه از هش‌ها با کلیدهای :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) را مد نظر قرار دهید.

توسط پژوهشگر در 201 روز قبل ساعت 03:26
دسته بندی ها: Ruby Ruby for beginner
reyhaneh در 201 روز قبل ساعت 06:27

برای بدست آوردن بهترین N نفر از آرایه‌ای از هش‌ها با کلیدهای :name و :score از max_by(n) استفاده کنید تا تنها N عنصر با بالاترین امتیاز را بیابید. مقدار امتیاز را می‌توانید به صورت h[:score] یا h['score'] بخوانید (با در نظر گرفتن هر دو سازگاری). خروجی را با map به نام‌ها تبدیل کنید و N را با [n, arr.length].min محدود کنید تا از داشتن N بزرگ‌تر از طول آرایه جلوگیری شود. max_by(n) برای کارایی بهتر، مرتب‌سازی کامل آرایه را انجام نمی‌دهد و مناسب استفاده در این سناریو است.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری