Percursos
/
Elm
Elm
/
Exercícios
/
Mago em formação
Mago em formação

Mago em formação

Exercício de aprendizagem

Introdução

Arrays

Em Elm, um Array é um vetor: uma coleção imutável e rápida de zero ou mais valores do mesmo tipo.

Ao contrário de List, que é importado por omissão, o módulo Array tem de ser importado explicitamente, com import Array ou algo semelhante.

Podes definir um array da seguinte forma:

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

Podes adicionar elementos a um array com Array.push:

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

Podes obter um elemento de um array com Array.get:

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

Podes alterar um elemento de um array com Array.set:

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

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

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

Instruções

Como aspirante a maga, a Elyse precisa de praticar o básico. Tem um baralho de cartas que quer manipular.

Para facilitar um pouco as coisas, só usa as cartas de 1 a 10.

1. Obter uma carta de um baralho

Implementa a função getCard, que devolve a carta na posição index do baralho dado. Se o índice não estiver no baralho, devolve Nothing.

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

2. Alterar uma carta no baralho

Implementa a função setCard, que devolve um baralho com a carta na posição index alterada para a nova carta fornecida. Se o index não estiver no baralho, devolve 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. Adicionar uma carta ao baralho

Implementa a função addCard, que devolve um baralho com a nova carta adicionada.

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

4. Remover uma carta do baralho

Implementa a função removeCard, que devolve um baralho com a carta na posição index removida. Se o index dado não for um índice válido no baralho, devolve 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. Contar o número de cartas pares no baralho

Implementa 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 A ligação abre numa nova janela ou separador
Elm Exercism

Estás pronto para começar Mago em formação?

Inscreve-te no Exercism para aprenderes e dominares Elm com 28 conceitos110 exercícios, e mentoria humana real, tudo grátis.