در زبان روبی، تابعی بنویسید که یک هش با کلیدِ نام دانشآموز و مقدارِ نمره میگیرد و نام سه دانشآموز با بالاترین نمره را بهصورت آرایه برمیگرداند.
12.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:35 0.0
برای حل از متدهای مجموعهای روبی استفاده کنید: میتوانید با hash.sort_by { |name, score| score } یا hash.sort_by(&:last) بر اساس مقدار مرتب کنید، سپس با reverse یا با انتخاب آخرینها (یا استفاده از sort_by { |_,v| -v }) سه آیتم اول را بگیرید و با map(&:first) فقط نامها را استخراج کنید. در نظر داشته باشید اگر تعداد عناصر کمتر از سه بود، همهٔ نامها را برگردانید؛ همچنین روشهای مختصر Enumerable مانند first، take و map کمککنندهاند.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای دریافت نام سه دانشآموز با بالاترین نمره از یک هش نام-نمره در روبی، میتوانید hash.sort_by(&:last).reverse.take(3).map(&:first) استفاده کنید. این نتیجه به صورت یک آرایه از نامها است و نیازی به تغییر هش اصلی ندارد. اگر کمتر از سه دانشآموز وجود داشته باشد، take(3) فقط همان تعداد را برمیگرداند. توجه کنید که اگر بعضی نمرات nil باشند، باید پیش از مرتبسازی مقدار آنها را به مقدار پیشفرضی مانند 0 تبدیل کنید (مثلاً با transform_values { |v| v || 0 } قبل از sort_by) تا خطایی ایجاد نشود.
گزارش