Created
February 10, 2015 22:04
-
-
Save einarwh/2de01c1feac7d5c651f8 to your computer and use it in GitHub Desktop.
The diamond kata using mirroring.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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