المسارات
/
Elm
Elm
/
التمارين
/
ساحر قيد التدريب
ساحر قيد التدريب

ساحر قيد التدريب

تمرين تعلّمي

مقدمة

المصفوفات

المصفوفة Array في Elm هي مجموعة سريعة غير قابلة للتغيير من صفر أو أكثر من القيم من النوع نفسه.

على عكس List، وهو جزء من الاستيرادات الافتراضية، يجب استيراد وحدة Array صراحةً باستخدام import Array أو ما شابه.

يمكن تعريف المصفوفات على النحو التالي:

import Array exposing (Array)

empty : Array Char
empty = Array.empty

singleValue = Array.fromList [ 5 ] --> Array Int

repeatSingleValue = Array.repeat 2 5 --> Array.fromList [ 5, 5 ]

initialiseFromIndex = Array.initialise 3 (\index -> index * 2) --> Array.fromList [ 0, 2, 4 ]

initialisefromList = Array.fromList [ "a", "b", "c" ] --> Array.fromList [ "a", "b", "c" ]

تُضاف العناصر إلى المصفوفة باستخدام Array.push:

twoToFour = Array.fromList [ 2, 3, 4 ]
oneToFour = Array.push 1 twoToFour --> Array.fromList [ 1, 2, 3, 4 ]

يُسترجَع عنصر من المصفوفة باستخدام Array.get:

sixSeven = Array.fromList [ 6, 7 ]
Array.get 0 sixSeven --> Just 6

يُضبط عنصر في المصفوفة باستخدام Array.set:

sixSeven = Array.fromList [ 6, 7 ]
Array.set 1 8 sixSeven --> Array.fromList [ 6, 8 ]

تُعالَج المصفوفات بواسطة الدوال المعرّفة في وحدة Array.

oneTwo = Array.fromList [ 1, 2 ]
Array.length oneTwo --> 2

التعليمات

بصفتها ساحرةً ناشئة، تحتاج إيليز إلى ممارسة بعض الأساسيات. لديها رزمة بطاقات تريد التعامل معها.

ولتسهيل الأمور قليلًا، تستخدم البطاقات من 1 إلى 10 فقط.

1. استرجاع بطاقة من الرزمة

نفّذ الدالة getCard التي تُرجع البطاقة الموجودة عند الموضع index من الرزمة المعطاة. وإذا لم يكن الفهرس موجودًا في الرزمة، فأرجع Nothing.

getCard 2 ( Array.fromList [ 1, 2, 4, 1 ] )
    --> Just 4
getCard 6 ( Array.fromList [ 1, 2, 4, 1 ] )
    --> Nothing

2. تغيير بطاقة في الرزمة

نفّذ الدالة setCard التي تُرجع رزمة تغيّرت فيها البطاقة عند الموضع index إلى البطاقة الجديدة المعطاة. وإذا لم يكن index موجودًا في الرزمة، فأرجع الرزمة الأصلية.

setCard 2 6 ( Array.fromList [ 1, 2, 4, 1 ] )
    --> Array.fromList [ 1, 2, 6, 1 ]
setCard 6 6 ( Array.fromList [ 1, 2, 4, 1 ] )
    --> Array.fromList [ 1, 2, 4, 1 ]

3. إضافة بطاقة إلى الرزمة

نفّذ الدالة addCard التي تُرجع رزمة أُضيفت إليها البطاقة الجديدة.

addCard 8 ( Array.fromList [ 5, 9, 7, 1 ] )
    --> Array.fromList [ 5, 9, 7, 1, 8 ]

4. إزالة بطاقة من الرزمة

نفّذ الدالة removeCard التي تُرجع رزمة أُزيلت منها البطاقة عند الموضع index. وإذا لم يكن index المعطى فهرسًا صالحًا في الرزمة، فأرجع الرزمة الأصلية.

removeCard 2 ( Array.fromList [ 3, 2, 6, 4, 8 ] )
    --> Array.fromList [ 3, 2, 4, 8 ]
removeCard 2 ( Array.fromList [ 3, 2 ] )
    --> Array.fromList [ 3, 2 ]

5. عدّ عدد البطاقات ذات الأعداد الزوجية في الرزمة

نفّذ الدالة evenCardCount التي تعدّ عدد البطاقات ذات الأعداد الزوجية في الرزمة.

evenCardCount (Array.fromList [ 3, 8, 4, 5, 1, 6, 10 ] )
    --> 4
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Elm Exercism

مستعد لبدء ساحر قيد التدريب؟

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