トラック
/
Elm
Elm
/
演習
/
見習い魔術師
見習い魔術師

見習い魔術師

学習演習

はじめに

配列

ElmのArrayは、同じ型の値を0個以上保持できる、高速でイミュータブルなコレクションです。

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を学んでマスターできます。すべて無料です。