트랙
/
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는 몇 가지 기본기를 연습하려고 해요. Elyse에게는 다루고 싶은 카드 덱이 하나 있어요.

조금 더 쉽게 하기 위해 1부터 10까지의 카드만 사용해요.

1. 덱에서 카드 가져오기

주어진 덱에서 index 위치에 있는 카드를 반환하는 getCard 함수를 구현해요. 인덱스가 덱에 없으면 Nothing을 반환해요.

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

2. 덱의 카드 바꾸기

index 위치의 카드를 주어진 새 카드로 바꾼 덱을 반환하는 setCard 함수를 구현해요. 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. 덱에서 카드 제거하기

index 위치의 카드를 제거한 덱을 반환하는 removeCard 함수를 구현해요. 주어진 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개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.