تابعی بنویسید که یک آرایه از اعداد صحیح را بگیرد و با استفاده از ایتراتورهای Enumerable در روبی یک هش برگرداند که کلید :squares شامل مربعِ اعدادِ زوج و کلید :sum شامل مجموعِ کلیِ اعداد باشد.
13.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:59 0.0
برای حل، میتوانید از متدهای Enumerable مثل select برای انتخاب اعداد زوج و سپس map برای تبدیل هر عدد به مربعش استفاده کنید و برای محاسبه مجموع از sum یا inject (reduce) بهره ببرید. بهعنوان نکته، میتوان همه را در یک پاس با each_with_object یا inject انجام داد تا از عبور چندباره از آرایه جلوگیری شود؛ نام متدها: each, select, map, inject/reduce, sum.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای کارایی بهتر، از یک پاس با each_with_object استفاده کنید تا هم مربعهای زوجها و هم مجموع کل را در یک هش جمعآوری کند. به این منظور میتوانید از ترکیبی مانند arr.select(&:even?).map { |n| n*n } برای squares و arr.sum برای مجموع استفاده کنید و نتیجه را به صورت { squares: ..., sum: ... } برگردانید. اگر بخواهید دقیقاً یک پاس انجام شود، میتوانید از inject/reduce یا همان reduce با بهروزرسانی همزمان هر دو مقدار استفاده کنید. توجه کنید که مربع اعداد منفی هم مانند اعداد مثبت است و چنین edge casesای معمولاً مشکلی ایجاد نمیکنند.
گزارش