مسیرها
/
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. برداشتن یک کارت از دسته

تابع getCard را پیاده‌سازی کنید که کارت واقع در موقعیت index را از دسته‌ی داده‌شده برمی‌گرداند. اگر 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 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.