i

Befehlsumwandlung

Eine Zeichenkette umwandeln

Ziel ist es, eine Zeichenkette in einen Bewegungsbefehl umzuwandeln. Der folgende REPL-Dialog zeigt das gewünschte Verhalten der zu implementierenden Funktion toBefehl sowie einer Hilfsfunktion toMaybeBefehl.

REPL-Dialog 1:

> toMaybeBefehl "RE"
Just RE : Maybe Befehl
> toMaybeBefehl "VW 3"
Just (VW 3) : Maybe Befehl
> toMaybeBefehl "xxx" 
Nothing : Maybe Befehl
> toMaybeBefehl "VW x"
Nothing : Maybe Befehl
> toMaybeBefehl " LI"
Nothing : Maybe Befehl
> toMaybeBefehl "VW  4"
Nothing : Maybe Befehl

REPL-Dialog 2:

> toBefehl "VW -1"
VW -1 : Befehl
> toBefehl "RE"   
RE : Befehl
> toBefehl "RE "
VW 0 : Befehl
> toBefehl "VW o"
VW 0 : Befehl
> toBefehl "VW   1"
VW 0 : Befehl

Beachte, dass wir hier sehr kleinkariert sind und keine zusätzlichen Leerzeichen erlauben.

Der folgende Quelltext liefert ein Programmgerüst.

module TestMaybe exposing (..)

type Befehl 
    = LI                    -- links
    | RE                    -- rechts
    | VW Int                -- vorwärts ...

toMaybeBefehl: String -> Maybe Befehl
toMaybeBefehl z = 
    case z of
        "LI" -> ...
        "RE" -> ...
        _ -> 
            if String.startsWith "VW" z then
                let
                    maybeint = z |> String.dropLeft 3 |> String.toInt
                in
                case maybeint of
                    Just x -> ...
                    Nothing -> ...
            else
                ...

toBefehl: String -> Befehl
toBefehl z =
    ...

Aufgabe 1

Analysiere den Quelltext und ergänze die fehlenden Teile. Teste die Funktionen mit Funktionsaufrufen wie in den oben gezeigten REPL-Dialogen.

Aufgabe 2

Wenn du fit bist, dann wandle eine Zeichenkette mit einer Liste von Befehlen in folgender Weise um:

> toBefehlsliste "RE VW -1 LI LI VW 2"
[RE,VW -1,LI,LI,VW 2] : List Befehl

Suche

v
110.2.14.1.1.4
inf-schule.de/fp_elm_alteversion/elm_programme/fehlerbehandlung/benutzereingaben/lernstrecke/befehlsumwandlung
inf-schule.de/110.2.14.1.1.4
inf-schule.de/@/page/46J4mpg0ZQcE5GmE

Rückmeldung geben