Треки
/
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 вправ та справжнє наставництво від людей, і все це безкоштовно.