Jump to content

Sudoku: Difference between revisions

m
→‎{{header|F_Sharp|F#}}: Tidied up indexing indentation
(Added backtrack F# solution)
m (→‎{{header|F_Sharp|F#}}: Tidied up indexing indentation)
Line 4,012:
[for s in squares do s, [| for u in unitList do if u |> Array.contains s then u |] ] |> Map.ofSeq
 
/// DistionaryDictionary of all peer squares in the relevant units wrt square in question
let peers =
[for s in squares do units[s] |> Array.concat |> Array.distinct |> Array.except [s] |> tuple2 s] |> Map.ofSeq
Line 4,059:
let solve grid = grid |> parseGrid >>= backtrack (Some "A1")
</lang>
'''Usage:'''
Usage<lang fsharp>open System
open SudokuBacktrack
 
Line 4,066 ⟶ 4,067:
let puzzle = "000028000800010000000000700000600403200004000100700000030400500000000010060000000"
puzzle |> printfn "Puzzle:\n%s"
puzzle |> parseGrid |> prettyPrint |> printfn "FormatedFormatted:\n%s"
puzzle |> solve |> prettyPrint |> printfn "Solution:\n%s"
 
Line 4,072 ⟶ 4,073:
Console.ReadKey() |> ignore
0</lang>
{{Output}}<pre>
Puzzle:
000028000800010000000000700000600403200004000100700000030400500000000010060000000
Line 4,129 ⟶ 4,130:
|>List.iter(fun (_,n)->n|>Seq.fold(fun z ((_,g),v)->[z..g-1]|>Seq.iter(fun _->printf " |");printf "%s|" v; g+1 ) 0 |>ignore;printfn "")
</lang>
'''Usage:'''
 
===Demonstration===
Given sud1.csv:
<pre>
Cookies help us deliver our services. By using our services, you agree to our use of cookies.