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