Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
The diamond kata using mirroring.
open System
let genLists lst =
[ for e in lst do yield List.map (fun x -> if x = e then x else '.') lst ]
let mirror lst =
match lst with
| [] -> []
| h::t -> List.rev t @ lst
let diamond letters =
letters |> genLists
|> List.map (fun a -> mirror a)
|> List.rev
|> mirror
let toStr d =
d |> List.map (fun a -> new string(Array.ofList(a)))
|> String.concat "\n"
['A' .. 'Z'] |> diamond |> toStr |> printfn "%s"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment