تابعی بنویسید که یک آرایه از اعداد صحیح را بگیرد و با استفاده از ایتراتورهای 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.

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

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

گزارش

1 پاسخ

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

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