Un Array en Elm est une collection immuable rapide de zéro ou plusieurs valeurs de même type.
Contrairement à List, qui est un import par défaut, le module Array doit être importé explicitement, avec import Array ou équivalent.
Les tableaux peuvent être définis comme suit :
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" ]
Les éléments sont ajoutés à un tableau avec Array.push :
twoToFour = Array.fromList [ 2, 3, 4 ]
oneToFour = Array.push 1 twoToFour --> Array.fromList [ 1, 2, 3, 4 ]
Un élément d'un tableau est récupéré avec Array.get :
sixSeven = Array.fromList [ 6, 7 ]
Array.get 0 sixSeven --> Just 6
Un élément d'un tableau est modifié avec Array.set :
sixSeven = Array.fromList [ 6, 7 ]
Array.set 1 8 sixSeven --> Array.fromList [ 6, 8 ]
Les tableaux se manipulent avec les fonctions définies dans le module Array.
oneTwo = Array.fromList [ 1, 2 ]
Array.length oneTwo --> 2
En tant que future magicienne, Elyse doit s'exercer sur quelques bases. Elle a un paquet de cartes qu'elle veut manipuler.
Pour que ce soit un peu plus simple, elle n'utilise que les cartes de 1 à 10.
Implémente la fonction getCard qui renvoie la carte à la position index du paquet donné. Si l'indice ne se trouve pas dans le paquet, renvoie Nothing.
getCard 2 ( Array.fromList [ 1, 2, 4, 1 ] )
--> Just 4
getCard 6 ( Array.fromList [ 1, 2, 4, 1 ] )
--> Nothing
Implémente la fonction setCard qui renvoie un paquet dont la carte à la position index a été remplacée par la nouvelle carte fournie.
Si l'indice ne se trouve pas dans le paquet, renvoie le paquet d'origine.
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 ]
Implémente la fonction addCard qui renvoie un paquet auquel la nouvelle carte a été ajoutée.
addCard 8 ( Array.fromList [ 5, 9, 7, 1 ] )
--> Array.fromList [ 5, 9, 7, 1, 8 ]
Implémente la fonction removeCard qui renvoie un paquet dont la carte à la position index a été retirée.
Si l'indice donné n'est pas un indice valide dans le paquet, renvoie le paquet d'origine.
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 ]
Implémente la fonction evenCardCount qui compte le nombre de cartes paires dans le paquet.
evenCardCount (Array.fromList [ 3, 8, 4, 5, 1, 6, 10 ] )
--> 4
Inscris-toi sur Exercism pour apprendre et maîtriser Elm avec 28 concepts110 exercices, et un vrai mentorat humain, le tout gratuitement.