Aufgabe 01 in 3 Ausführungen
parent
f23b6369f6
commit
9d6e9e87fe
|
@ -0,0 +1,31 @@
|
|||
module Aufgabe_01 exposing (..)
|
||||
|
||||
import Html exposing (text, ul, li)
|
||||
import List exposing (map)
|
||||
|
||||
euro : List Int
|
||||
euro = [50000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 2, 1]
|
||||
|
||||
input : Int
|
||||
input = 4711
|
||||
|
||||
|
||||
change : Int -> List Int -> Result String (List Int)
|
||||
change amount currency =
|
||||
if amount == 0 then Ok []
|
||||
|
||||
else
|
||||
case currency of
|
||||
head :: tail ->
|
||||
if head < amount then
|
||||
case change (amount - head) currency of
|
||||
Err message -> Err message
|
||||
Ok rest -> Ok (head :: rest)
|
||||
|
||||
else change amount tail
|
||||
[] -> Err "Kein Wechselgeld"
|
||||
|
||||
|
||||
main = case change input euro of
|
||||
Ok changed -> ul [] (map (\x -> li [] [(text (String.fromInt x))]) changed)
|
||||
Err message -> text message
|
|
@ -0,0 +1,26 @@
|
|||
module Aufgabe_01_2 exposing (..)
|
||||
|
||||
import Html
|
||||
|
||||
euro : List Int
|
||||
euro = [50000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 2, 1]
|
||||
|
||||
|
||||
wechseln : Int -> List Int -> Result String (List Int)
|
||||
wechseln geldMenge waehrung =
|
||||
if geldMenge <= 0 then Ok []
|
||||
else case waehrung of
|
||||
head :: tail -> if head <= geldMenge
|
||||
then case wechseln (geldMenge - head) waehrung of
|
||||
Err msg -> Err msg
|
||||
Ok wechselgeld -> Ok (head :: wechselgeld)
|
||||
else wechseln geldMenge tail
|
||||
[] -> Err "Kein Wechselgeld"
|
||||
|
||||
|
||||
result = wechseln 4711 euro
|
||||
|
||||
main = case result of
|
||||
Ok wechselgeld -> Html.ul [] (List.map (\x -> Html.li [] [Html.text (String.fromInt x)]) wechselgeld)
|
||||
Err msg -> Html.text msg
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
module Aufgabe_01_3 exposing (..)
|
||||
|
||||
import Html
|
||||
|
||||
euro : List Int
|
||||
euro = [50000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 2, 1]
|
||||
|
||||
change : Int -> List Int -> Result String (List Int)
|
||||
change amount currency =
|
||||
if amount <= 0
|
||||
then Ok []
|
||||
else case currency of
|
||||
[] -> Err "No change available"
|
||||
head :: tail ->
|
||||
if head <= amount
|
||||
then case change (amount - head) currency of
|
||||
Ok c -> Ok (head :: c)
|
||||
Err msg -> Err msg
|
||||
else change amount tail
|
||||
|
||||
|
||||
result = change 7563 euro
|
||||
main = case result of
|
||||
Err msg -> Html.text msg
|
||||
Ok money -> Html.ul [] (List.map (\x -> Html.li [] [Html.text (String.fromInt x)]) money)
|
|
@ -0,0 +1,68 @@
|
|||
module Aufgabe_01 exposing (..)
|
||||
|
||||
import Html exposing (text, ul, li)
|
||||
import List exposing (map)
|
||||
|
||||
|
||||
|
||||
type alias Amount =
|
||||
Int
|
||||
|
||||
|
||||
type alias Money =
|
||||
List Int
|
||||
|
||||
|
||||
input : Amount
|
||||
input =
|
||||
4711
|
||||
|
||||
|
||||
euro : Money
|
||||
euro =
|
||||
[ 50000
|
||||
, 20000
|
||||
, 10000
|
||||
, 5000
|
||||
, 2000
|
||||
, 1000
|
||||
, 500
|
||||
, 200
|
||||
, 100
|
||||
, 50
|
||||
, 20
|
||||
, 10
|
||||
, 2
|
||||
, 1
|
||||
]
|
||||
|
||||
|
||||
change : Amount -> Money -> Result String Money
|
||||
change amount currency =
|
||||
if amount == 0 then
|
||||
Ok []
|
||||
|
||||
else
|
||||
case currency of
|
||||
head :: tail ->
|
||||
if head <= amount then
|
||||
case change (amount - head) currency of
|
||||
Err message ->
|
||||
Err message
|
||||
|
||||
Ok rest ->
|
||||
Ok (head :: rest)
|
||||
|
||||
else
|
||||
change amount tail
|
||||
|
||||
[] ->
|
||||
Err "kein Wechselgeld"
|
||||
|
||||
|
||||
main = case change input euro of
|
||||
Ok changed ->
|
||||
ul [] (map (\x -> li [] [(text (String.fromInt x))]) changed)
|
||||
|
||||
Err message ->
|
||||
text message
|
|
@ -0,0 +1,41 @@
|
|||
module Main exposing (main)
|
||||
|
||||
import Browser
|
||||
import Html exposing (Html, button, div, text)
|
||||
import Html.Events exposing (onClick)
|
||||
|
||||
|
||||
-- MAIN
|
||||
main = Browser.sandbox { init = init, update = update, view = view }
|
||||
|
||||
|
||||
|
||||
-- MODEL
|
||||
type alias Model = Int
|
||||
|
||||
init : Model
|
||||
init =
|
||||
0
|
||||
|
||||
|
||||
-- UPDATE
|
||||
type Msg = Increment | Decrement
|
||||
|
||||
update : Msg -> Model -> Model
|
||||
update msg model =
|
||||
case msg of
|
||||
Increment ->
|
||||
model + 1
|
||||
|
||||
Decrement ->
|
||||
model - 1
|
||||
|
||||
|
||||
-- VIEW
|
||||
view : Model -> Html Msg
|
||||
view model =
|
||||
div []
|
||||
[ button [ onClick Decrement ] [ text "-" ]
|
||||
, div [] [ text (String.fromInt model) ]
|
||||
, button [ onClick Increment ] [ text "+" ]
|
||||
]
|
Loading…
Reference in New Issue