Trilhas
/
Elm
Elm
/
Exercícios
/
Aprendiz de Mago
Aprendiz de Mago

Aprendiz de Mago

Exercício de aprendizagem

Introdução

Arrays

Um Array em Elm é uma coleção imutável e rápida de zero ou mais valores do mesmo tipo.

Diferente de List, que é um import padrão, o módulo Array precisa ser importado explicitamente, usando import Array ou algo parecido.

Arrays podem ser definidos assim:

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" ]

Elementos são adicionados a um Array usando Array.push:

twoToFour = Array.fromList [ 2, 3, 4 ]
oneToFour = Array.push 1 twoToFour --> Array.fromList [ 1, 2, 3, 4 ]

Um elemento em um Array é obtido usando Array.get:

sixSeven = Array.fromList [ 6, 7 ]
Array.get 0 sixSeven --> Just 6

Um elemento em um Array é definido usando Array.set:

sixSeven = Array.fromList [ 6, 7 ]
Array.set 1 8 sixSeven --> Array.fromList [ 6, 8 ]

Arrays são manipulados por funções definidas no módulo Array.

oneTwo = Array.fromList [ 1, 2 ]
Array.length oneTwo --> 2

Instruções

Como uma mágica em formação, Elyse precisa praticar alguns fundamentos. Ela tem um baralho de cartas que quer manipular.

Para facilitar um pouco as coisas, ela usa apenas as cartas de 1 a 10.

1. Retire uma carta do baralho

Implemente a função getCard que retorna a carta na posição index do baralho fornecido. Se o índice não existir no baralho, retorne Nothing.

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

2. Troque uma carta no baralho

Implemente a função setCard que retorna um baralho com a carta na posição index trocada pela nova carta fornecida. Se o index não existir no baralho, retorne o baralho original.

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. Adicione uma carta ao baralho

Implemente a função addCard que retorna um baralho com a nova carta adicionada.

addCard 8 ( Array.fromList [ 5, 9, 7, 1 ] )
    --> Array.fromList [ 5, 9, 7, 1, 8 ]

4. Remova uma carta do baralho

Implemente a função removeCard que retorna um baralho com a carta na posição index removida. Se o index fornecido não for um índice válido no baralho, retorne o baralho original.

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. Conte o número de cartas pares no baralho

Implemente a função evenCardCount que conta o número de cartas pares no baralho.

evenCardCount (Array.fromList [ 3, 8, 4, 5, 1, 6, 10 ] )
    --> 4
Editar via GitHub O link abre em uma nova janela ou aba
Elm Exercism

Tudo pronto para começar Aprendiz de Mago?

Crie sua conta no Exercism para aprender e dominar Elm com 28 conceitos110 exercícios e mentoria humana de verdade, tudo de graça.