نفّذ عمليات المصفوفة الأساسية.
في اللغات الوظيفية، تُعدّ عمليات المصفوفات مثل length وmap وreduce شائعة جدًا.
نفّذ سلسلة من عمليات المصفوفة الأساسية، دون استخدام دوال موجودة.
يعتمد العدد الدقيق للعمليات المطلوب تنفيذها وأسماؤها على المسار، لتجنّب التعارض مع الأسماء الموجودة، لكن العمليات العامة التي ستنفّذها تشمل:
append (بإعطاء مصفوفتين، أضِف كل عناصر المصفوفة الثانية إلى نهاية المصفوفة الأولى)؛concatenate (بإعطاء سلسلة من المصفوفات، ادمج كل عناصر المصفوفات كلها في مصفوفة واحدة مسطّحة)؛filter (بإعطاء دالة شرطية ومصفوفة، أرجِع المصفوفة التي تضم كل العناصر التي يكون عندها predicate(item) صحيحًا)؛length (بإعطاء مصفوفة، أرجِع العدد الإجمالي للعناصر داخلها)؛map (بإعطاء دالة ومصفوفة، أرجِع مصفوفة نتائج تطبيق function(item) على كل العناصر)؛foldl (بإعطاء دالة ومصفوفة وقيمة مراكم ابتدائية، اطوِ (اختزل) كل عنصر في المراكم من اليسار)؛foldr (بإعطاء دالة ومصفوفة وقيمة مراكم ابتدائية، اطوِ (اختزل) كل عنصر في المراكم من اليمين)؛reverse (بإعطاء مصفوفة، أرجِع مصفوفة تضم كل العناصر الأصلية، لكن بترتيب معكوس).لاحظ أن ترتيب تمرير الوسائط إلى دالتي الطيّ (foldl وfoldr) مهم.
الوصف أعلاه لهذا التمرين مشترك بين جميع مسارات Exercism.
ولنكون متوافقين مع المكتبة القياسية في Elixir، ينبغي أن تأخذ الدوال التي يستخدمها foldl وfoldr العنصر كوسيط أول، والمُراكم كوسيط ثانٍ.
كذلك، ولكي لا تتعارض مع الدالة Kernel.length/1 المستوردة تلقائيًا، ستُسمّى الدالة التي تحسب الطول count بدلًا من ذلك.
تم وسم اختبار واحد أو أكثر من اختبارات هذا التمرين بالوسم :slow، لأنها قد تستغرق وقتًا طويلًا حتى تنتهي. ولهذا السبب، لن يُشغّلها مشغّل الاختبارات الآلي على المنصة. إذا كنت تحلّ هذا التمرين مباشرةً على المنصة في محرّر الويب، فقد يكون من الأفضل أن تنزّل هذا التمرين إلى جهازك بدلًا من ذلك. سيتيح لك ذلك تشغيل جميع الاختبارات والتحقق من كفاءة حلّك.
سجّل في Exercism لتتعلّم وتتقن Elixir عبر 58 مفهومًا168 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.
استمتع بمقدمة عملية إلى الاستدعاء الذاتي، واستكشف البدائل الأمرية والوظيفية لتمرين عمليات القوائم، وتعمّق في الاستدعاء الذاتي الذيلية ودوال المراكم.