Sha256: 2f415f163a2abd5e520b6bd960d8db2740ca58dc8a27d3367830ce61a213acea

Contents?: true

Size: 1.14 KB

Versions: 262

Compression:

Stored size: 1.14 KB

Contents

module KinderGartenGarden

type Plant = Violets | Radishes | Clover | Grass

let plantsPerChildPerRow = 2
let rowSeparator = '\n'

let private defaultChildren = ["Alice"; "Bob"; "Charlie"; "David";
                               "Eve"; "Fred"; "Ginny"; "Harriet";
                               "Ileana"; "Joseph"; "Kincaid"; "Larry"]

let private plantFromCode code =
    match code with
    | 'V' -> Plant.Violets
    | 'R' -> Plant.Radishes
    | 'C' -> Plant.Clover
    | 'G' -> Plant.Grass
    | x -> failwithf "%c is an invalid plant code" x

let private plantsInRow (row: string) = 
    Seq.map plantFromCode row 
    |> Seq.chunkBySize plantsPerChildPerRow
    |> Seq.map List.ofArray

let garden children (windowSills: string) =     
    let rows = windowSills.Split rowSeparator
    let row1 = plantsInRow rows.[0]
    let row2 = plantsInRow rows.[1]
    Seq.zip3 (children |> List.sort) row1 row2 
    |> Seq.map (fun (child, plants1, plants2) -> (child, plants1 @ plants2))
    |> Map.ofSeq

let defaultGarden windowSills = garden defaultChildren windowSills

let lookupPlants child childPlantsMap = defaultArg (Map.tryFind child childPlantsMap) []

Version data entries

262 entries across 262 versions & 1 rubygems

Version Path
trackler-2.2.1.44 tracks/fsharp/exercises/kindergarten-garden/Example.fs
trackler-2.2.1.43 tracks/fsharp/exercises/kindergarten-garden/Example.fs
trackler-2.2.1.42 tracks/fsharp/exercises/kindergarten-garden/Example.fs
trackler-2.2.1.41 tracks/fsharp/exercises/kindergarten-garden/Example.fs
trackler-2.2.1.40 tracks/fsharp/exercises/kindergarten-garden/Example.fs
trackler-2.2.1.39 tracks/fsharp/exercises/kindergarten-garden/Example.fs
trackler-2.2.1.38 tracks/fsharp/exercises/kindergarten-garden/Example.fs
trackler-2.2.1.37 tracks/fsharp/exercises/kindergarten-garden/Example.fs
trackler-2.2.1.36 tracks/fsharp/exercises/kindergarten-garden/Example.fs
trackler-2.2.1.35 tracks/fsharp/exercises/kindergarten-garden/Example.fs
trackler-2.2.1.34 tracks/fsharp/exercises/kindergarten-garden/Example.fs
trackler-2.2.1.33 tracks/fsharp/exercises/kindergarten-garden/Example.fs
trackler-2.2.1.32 tracks/fsharp/exercises/kindergarten-garden/Example.fs
trackler-2.2.1.31 tracks/fsharp/exercises/kindergarten-garden/Example.fs
trackler-2.2.1.30 tracks/fsharp/exercises/kindergarten-garden/Example.fs
trackler-2.2.1.29 tracks/fsharp/exercises/kindergarten-garden/Example.fs
trackler-2.2.1.28 tracks/fsharp/exercises/kindergarten-garden/Example.fs
trackler-2.2.1.27 tracks/fsharp/exercises/kindergarten-garden/Example.fs
trackler-2.2.1.26 tracks/fsharp/exercises/kindergarten-garden/Example.fs
trackler-2.2.1.25 tracks/fsharp/exercises/kindergarten-garden/Example.fs