學習軌道
/
Elm
Elm
/
練習
/
見習魔術師
見習魔術師

見習魔術師

學習練習

簡介

陣列

在 Elm 中,Array是一種快速且不可變的集合,可以存放零個或多個相同型別的值。

與List不同,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

說明

身為見習魔術師的 Elyse,需要練習一些基本功。她有一副牌,想要好好地操作它們。

為了讓事情簡單一點,她只用 1 到 10 這幾張牌。

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,透過 28 個概念110 個練習 和真人引導來學習並精通 Elm,全部免費。