Track
/
Elm
Elm
/
Esercizi
/
Apprendista mago
Apprendista mago

Apprendista mago

Esercizio di apprendimento

Introduzione

Gli array

Un Array in Elm è una collezione immutabile e veloce di zero o più valori dello stesso tipo.

A differenza di List, che è un import predefinito, il modulo Array deve essere importato esplicitamente, usando import Array o qualcosa di simile.

Gli array si possono definire così:

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

Gli elementi si aggiungono a un array usando Array.push:

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

Un elemento di un array si recupera usando Array.get:

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

Un elemento di un array si imposta usando Array.set:

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

Gli array si manipolano tramite le funzioni definite nel modulo Array.

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

Istruzioni

Nei panni di una futura maga, Elyse deve esercitarsi con le basi. Ha un mazzo di carte che vuole manipolare.

Per rendere le cose un po' più semplici, usa solo le carte da 1 a 10.

1. Recuperare una carta da un mazzo

Implementa la funzione getCard che restituisce la carta alla posizione index del mazzo dato. Se l'indice non è presente nel mazzo, restituisci Nothing.

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

2. Cambiare una carta nel mazzo

Implementa la funzione setCard che restituisce un mazzo con la carta alla posizione index sostituita con la nuova carta fornita. Se l'index non è presente nel mazzo, restituisci il mazzo originale.

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. Aggiungere una carta al mazzo

Implementa la funzione addCard che restituisce un mazzo con la nuova carta aggiunta.

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

4. Rimuovere una carta dal mazzo

Implementa la funzione removeCard che restituisce un mazzo con la carta alla posizione index rimossa. Se l'index indicato non è un indice valido nel mazzo, restituisci il mazzo originale.

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. Contare il numero di carte pari nel mazzo

Implementa la funzione evenCardCount che conta il numero di carte pari nel mazzo.

evenCardCount (Array.fromList [ 3, 8, 4, 5, 1, 6, 10 ] )
    --> 4
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Elm Exercism

Vuoi iniziare Apprendista mago?

Iscriviti a Exercism per imparare e padroneggiare Elm con 28 concetti110 esercizi e il mentoring di persone reali, tutto gratis.