Tracks
/
Elm
Elm
/
Übungen
/
Magier in Ausbildung
Magier in Ausbildung

Magier in Ausbildung

Lernübung

Einführung

Arrays

Ein Array in Elm ist eine schnelle, unveränderliche Sammlung von null oder mehr Werten desselben Typs.

Anders als List, die zu den Standard-Importen gehört, muss das Modul Array explizit importiert werden, mit import Array oder ähnlich.

Arrays können wie folgt definiert werden:

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

Elemente werden einem Array mit Array.push hinzugefügt:

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

Ein Element in einem Array wird mit Array.get abgerufen:

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

Ein Element in einem Array wird mit Array.set gesetzt:

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

Arrays werden durch Funktionen manipuliert, die im Array-Modul definiert sind.

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

Anleitung

Als angehende Magierin muss Elyse einige Grundlagen üben. Sie hat ein Kartendeck, das sie bearbeiten möchte.

Um es etwas einfacher zu machen, verwendet sie nur die Karten 1 bis 10.

1. Eine Karte aus einem Kartendeck holen

Implementiere die Funktion getCard, die die Karte an der Position index aus dem gegebenen Kartendeck zurückgibt. Wenn der Index nicht im Kartendeck vorkommt, gib Nothing zurück.

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

2. Eine Karte im Kartendeck ändern

Implementiere die Funktion setCard, die ein Kartendeck zurückgibt, in dem die Karte an der Position index durch die angegebene neue Karte ersetzt wurde. Wenn der index nicht im Kartendeck vorkommt, gib das ursprüngliche Kartendeck zurück.

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. Eine Karte zum Kartendeck hinzufügen

Implementiere die Funktion addCard, die ein Kartendeck mit der neu hinzugefügten Karte zurückgibt.

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

4. Eine Karte aus dem Kartendeck entfernen

Implementiere die Funktion removeCard, die ein Kartendeck zurückgibt, aus dem die Karte an der Position index entfernt wurde. Wenn der angegebene index kein gültiger Index im Kartendeck ist, gib das ursprüngliche Kartendeck zurück.

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. Die Anzahl der geraden Karten im Kartendeck zählen

Implementiere die Funktion evenCardCount, die die Anzahl der geraden Karten im Kartendeck zählt.

evenCardCount (Array.fromList [ 3, 8, 4, 5, 1, 6, 10 ] )
    --> 4
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Elm Exercism

Bereit, mit Magier in Ausbildung zu starten?

Melde dich bei Exercism an, um Elm mit 28 Konzepte110 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.