Skip to content

Instantly share code, notes, and snippets.

@scoiatael
Created January 23, 2018 13:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save scoiatael/a8feeaba7a22f46aedd1732640a3b72f to your computer and use it in GitHub Desktop.
Save scoiatael/a8feeaba7a22f46aedd1732640a3b72f to your computer and use it in GitHub Desktop.
let partner (a : char, b : char) : Move =
let swap (a, b) = (b, a) in
let toKV arr = Map.ofArray (Array.map swap (Array.indexed arr))
let ofKV map = Array.map snd (Array.sortBy fst (Array.map swap (Map.toArray map))) in
let withKV f arr = ofKV(f (toKV arr)) in
withKV (fun kv ->
let valA = (Map.find a kv) in
let valB = (Map.find b kv) in
Map.add b valA (Map.add a valB kv))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment