التجميع

التجميع

سهل

التعليمات

نفّذ عملية accumulate التي تأخذ مجموعة وعملية تُجرى على كل عنصر من عناصرها، ثم تُرجع مجموعة جديدة تحتوي على نتائج تطبيق تلك العملية على كل عنصر من عناصر المجموعة المدخلة.

لنأخذ مجموعة الأعداد التالية:

  • 1, 2, 3, 4, 5

والعملية التالية:

  • تربيع عدد (x => x * x)

يجب أن يكون الكود قادرًا على إنتاج مجموعة المربعات:

  • 1, 4, 9, 16, 25

ألقِ نظرة على حزمة الاختبارات لمعرفة توقيع الدالة المتوقع.

القيود

لا تلمس تلك الوظائف المسمّاة collect أو map أو fmap أو أيًّا كان اسمها، والتي توفّرها مكتبتك القياسية! حلّ هذه بنفسك باستخدام أدوات أساسية أخرى بدلًا منها.

متقدّم

من المعتاد استدعاء #to_enum عند تعريف طُرق لأي Enumerable عام، في حال عدم تمرير أي كتلة.

إليك اختبارًا إضافيًا يمكنك إضافته:

def test_accumulate_when_block_is_deferred
  skip
  accumulate_enumerator = [1, 2, 3].accumulate
  accumulated_result = accumulate_enumerator.map do |number|
    number * number
  end
  assert_equal [1, 4, 9], accumulated_result
end
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Ruby Exercism

مستعد لبدء التجميع؟

سجّل في Exercism لتتعلّم وتتقن Ruby عبر 21 مفهومًا121 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.