~sforman/Prolog-Junkyard

466f0094fac4a89542f32c56ef4d07ff7df61290 — Simon Forman 3 months ago d8e1990 master
Simple, easy Sudoku puzzles.
4 files changed, 681 insertions(+), 21 deletions(-)

M Sudoku/Makefile
M Sudoku/boring_sudoku.pl
A Sudoku/more_puzzles.txt
M Sudoku/puzzles.txt
M Sudoku/Makefile => Sudoku/Makefile +1 -1
@@ 1,3 1,3 @@
one_please: one_please.pl boring_sudoku.pl
	gplc --no-top-level one_please.pl boring_sudoku.pl
	gplc --min-size one_please.pl boring_sudoku.pl


M Sudoku/boring_sudoku.pl => Sudoku/boring_sudoku.pl +67 -20
@@ 48,37 48,84 @@ puzzle(Vars) :-
    fd_all_different([A77, A87, A97, A78, A88, A98, A79, A89, A99]).


write_puzzle([A11, A12, A13, A14, A15, A16, A17, A18, A19|Rest]) :-
    write([A11, A12, A13, '|', A14, A15, A16, '|', A17, A18, A19]), nl,
    write_puzzle(Rest).
write_puzzle([]) :- nl.

write_p([Last]) :- write(Last), nl, !.
write_p([Next|Rest]) :- write(Next), write(' '), write_p(Rest).
gen_puz(P) :-
    puzzle(P),
    fd_labeling(P, [variable_method(random)]).


fancy([A11, A12, A13, A14, A15, A16, A17, A18, A19,
       A21, A22, A23, A24, A25, A26, A27, A28, A29,
       A31, A32, A33, A34, A35, A36, A37, A38, A39,
       A41, A42, A43, A44, A45, A46, A47, A48, A49,
       A51, A52, A53, A54, A55, A56, A57, A58, A59,
       A61, A62, A63, A64, A65, A66, A67, A68, A69,
       A71, A72, A73, A74, A75, A76, A77, A78, A79,
       A81, A82, A83, A84, A85, A86, A87, A88, A89,
       A91, A92, A93, A94, A95, A96, A97, A98, A99]) -->

    "┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓\n",
    fancy_row(A11, A12, A13, A14, A15, A16, A17, A18, A19),
    "┠───┼───┼───╂───┼───┼───╂───┼───┼───┨\n",
    fancy_row(A21, A22, A23, A24, A25, A26, A27, A28, A29),
    "┠───┼───┼───╂───┼───┼───╂───┼───┼───┨\n",
    fancy_row(A31, A32, A33, A34, A35, A36, A37, A38, A39),
    "┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫\n",
    fancy_row(A41, A42, A43, A44, A45, A46, A47, A48, A49),
    "┠───┼───┼───╂───┼───┼───╂───┼───┼───┨\n",
    fancy_row(A51, A52, A53, A54, A55, A56, A57, A58, A59),
    "┠───┼───┼───╂───┼───┼───╂───┼───┼───┨\n",
    fancy_row(A61, A62, A63, A64, A65, A66, A67, A68, A69),
    "┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫\n",
    fancy_row(A71, A72, A73, A74, A75, A76, A77, A78, A79),
    "┠───┼───┼───╂───┼───┼───╂───┼───┼───┨\n",
    fancy_row(A81, A82, A83, A84, A85, A86, A87, A88, A89),
    "┠───┼───┼───╂───┼───┼───╂───┼───┼───┨\n",
    fancy_row(A91, A92, A93, A94, A95, A96, A97, A98, A99),
    "┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛\n".

fancy_row(A1, A2, A3, A4, A5, A6, A7, A8, A9) -->
     "┃ ", c(A1), " │ ", c(A2), " │ ", c(A3),
    " ┃ ", c(A4), " │ ", c(A5), " │ ", c(A6),
    " ┃ ", c(A7), " │ ", c(A8), " │ ", c(A9), " ┃\n".
    
c(V) --> { number(V), !, number_codes(V, C) }, C.
c(V) --> { var(V) }, " ".


write_puzzle(P) :-
    fancy(P, Codes, []),
    atom_codes(S, Codes),
    write(S).


split_at_nonvar(P, Prefix, Suffix) :-
    length(P, Len),
    repeat, % Without this the predicate is det.
    random(0, Len, N),
    length(Prefix, N),
    append(Prefix, [Term|Suffix], P),
    nonvar(Term).


puzzley(P, Pnew) :-
    random(0, 80, N),
    length(Prefix, N),
    append(Prefix, [Term|Suffix], P),
    nonvar(Term),
    split_at_nonvar(P, Prefix, Suffix),
    append(Prefix, [X|Suffix], Pnew),
    \+ \+ one_poss(X, Pnew).  % Double negation to unbind X after checking it.

one_poss(X, P) :- puzzle(P), fd_dom(X, [_]).

one_poss(X, P) :-
    puzzle(P),
    fd_dom(X, [_]).

pz --> puzzley, puzzley, puzzley, puzzley, puzzley.
pzz --> pz, pz, pz, pz, pz.

gen_puz(P) :-
    puzzle(P), fd_labeling(P, [variable_method(random)]).

pz --> puzzley, puzzley, puzzley, puzzley, puzzley.
pzz --> pz, pz, pz, pz, pz, pz.

simplify_puz(P0, P) :-
    pz(P0, P).

one_please :- gen_puz(P), write_p(P).
one_please :-
    gen_puz(P0),
    pzz(P0, P),
    write_puzzle(P).


/*  Mom's Puzzle Generator

A Sudoku/more_puzzles.txt => Sudoku/more_puzzles.txt +176 -0
@@ 0,0 1,176 @@
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃   │ 9 │ 4 ┃ 6 │   │ 2 ┃ 8 │ 3 │ 7 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 6 │ 3 │ 2 ┃ 4 │ 8 │   ┃   │ 1 │ 5 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 8 │ 5 │ 7 ┃ 1 │   │   ┃   │ 6 │ 2 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 9 │ 2 │ 8 ┃ 3 │ 7 │ 5 ┃   │ 4 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 7 │ 5 ┃ 8 │ 1 │   ┃ 3 │ 2 │ 9 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │ 1 ┃   │ 9 │   ┃ 7 │ 5 │ 8 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │   │   ┃ 9 │   │ 1 ┃ 5 │   │ 3 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 7 │ 4 │ 9 ┃   │ 6 │ 3 ┃ 2 │ 8 │ 1 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 5 │   │   ┃ 7 │ 2 │   ┃ 6 │   │ 4 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
sforman@bock:~/src/Prolog-Junkyard/Sudoku % ./one_please 
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃   │ 3 │ 9 ┃   │ 5 │ 2 ┃ 1 │   │ 6 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 2 │ 4 │ 8 ┃ 6 │   │ 9 ┃ 7 │ 3 │ 5 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 1 │ 6 │ 5 ┃ 3 │   │   ┃ 2 │ 9 │ 8 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 6 │   │ 1 ┃ 4 │ 9 │   ┃ 8 │ 2 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │   ┃ 1 │ 8 │   ┃ 5 │   │ 4 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 3 │   │ 4 ┃   │ 2 │ 6 ┃   │ 7 │ 1 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │ 9 │ 3 ┃ 2 │   │   ┃ 4 │ 5 │ 7 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 5 │ 2 │   ┃ 7 │ 4 │   ┃   │ 1 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 4 │ 1 │ 7 ┃   │   │   ┃   │   │   ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
sforman@bock:~/src/Prolog-Junkyard/Sudoku % ./one_please
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃ 9 │   │ 3 ┃   │ 7 │ 5 ┃ 6 │   │ 2 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 5 │   ┃   │ 6 │   ┃ 9 │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │   ┃ 8 │ 3 │   ┃ 5 │ 7 │ 1 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 8 │ 9 │ 5 ┃ 7 │ 1 │ 4 ┃ 2 │   │ 3 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 2 │ 7 ┃ 9 │ 5 │   ┃ 4 │ 1 │ 8 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 1 │ 4 │   ┃   │   │ 8 ┃   │ 9 │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │   │ 9 ┃ 2 │   │   ┃ 3 │ 4 │ 6 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 6 │ 3 │ 1 ┃ 5 │   │ 7 ┃   │   │ 9 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 4 │   │ 2 ┃ 6 │ 9 │ 3 ┃   │ 5 │ 7 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
sforman@bock:~/src/Prolog-Junkyard/Sudoku % ./one_please
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃ 2 │ 1 │ 4 ┃   │ 3 │ 7 ┃ 5 │ 9 │ 8 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 3 │ 9 ┃   │ 5 │   ┃   │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 5 │   │ 7 ┃   │   │ 1 ┃ 2 │ 4 │ 3 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 6 │ 4 │ 2 ┃ 8 │   │   ┃   │ 5 │ 9 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 5 │ 8 ┃   │   │ 4 ┃   │   │ 6 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 1 │ 9 │ 3 ┃   │ 6 │ 5 ┃ 8 │   │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │ 2 │ 6 ┃   │ 1 │   ┃ 4 │ 8 │ 5 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │   ┃ 3 │   │   ┃ 6 │ 1 │  ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 4 │ 8 │ 1 ┃ 5 │   │ 6 ┃ 9 │ 3 │ 7 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃ 2 │ 7 │ 4 ┃   │ 1 │   ┃ 5 │ 9 │ 6 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 6 │ 5 │ 1 ┃ 9 │ 4 │   ┃ 7 │ 8 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 3 │ 8 │ 9 ┃ 7 │   │ 6 ┃   │   │ 1 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 4 │ 1 │   ┃ 3 │   │ 9 ┃ 6 │ 5 │ 7 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 9 │ 3 │   ┃ 4 │   │   ┃ 2 │ 1 │ 8 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │ 2 ┃   │ 7 │ 8 ┃ 3 │   │ 9 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │ 4 │ 3 ┃ 2 │   │ 7 ┃ 1 │ 6 │ 5 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │ 5 ┃   │ 8 │ 1 ┃   │ 3 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 9 │   ┃   │   │   ┃ 8 │   │   ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃   │ 7 │   ┃ 8 │   │ 9 ┃ 1 │ 4 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 9 │ 8 │ 3 ┃ 4 │   │ 1 ┃ 5 │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 4 │ 1 │   ┃ 5 │   │   ┃   │ 8 │ 9 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │ 9 │ 4 ┃   │   │ 3 ┃ 8 │ 6 │ 1 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 5 │ 1 ┃   │   │   ┃ 7 │ 2 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 6 │ 2 │   ┃   │ 4 │ 7 ┃ 9 │ 5 │ 3 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │ 6 │   ┃   │ 8 │ 4 ┃   │ 9 │ 7 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 8 │ 3 │ 7 ┃ 9 │ 6 │ 2 ┃ 4 │ 1 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 2 │   │   ┃ 7 │   │ 5 ┃   │ 3 │ 8 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
sforman@bock:~/src/Prolog-Junkyard/Sudoku % timeout 1 ./one_please
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃ 5 │ 6 │   ┃ 8 │ 4 │   ┃ 1 │ 2 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 2 │   │ 3 ┃ 1 │   │   ┃ 4 │   │ 7 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │ 4 ┃ 7 │ 2 │ 5 ┃ 3 │ 8 │ 6 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │   │ 2 ┃ 9 │   │   ┃   │ 7 │ 3 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 3 │ 4 │   ┃ 5 │   │ 2 ┃ 6 │   │ 1 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 5 │ 9 ┃ 6 │   │   ┃ 2 │   │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 4 │ 7 │ 1 ┃   │   │ 6 ┃ 8 │ 3 │ 5 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 8 │ 3 │ 6 ┃ 4 │   │   ┃ 9 │ 1 │ 2 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 2 │   ┃ 3 │ 1 │ 8 ┃ 7 │   │   ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
sforman@bock:~/src/Prolog-Junkyard/Sudoku % timeout 1 ./one_please
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃ 5 │ 8 │ 2 ┃ 1 │ 7 │ 4 ┃ 6 │   │ 9 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 4 │   │   ┃ 2 │ 6 │ 3 ┃   │ 8 │ 1 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 6 │ 3 │ 1 ┃   │ 8 │ 5 ┃   │ 2 │ 4 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │ 9 │   ┃ 4 │ 1 │   ┃ 3 │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │   ┃   │   │   ┃ 8 │   │ 2 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 7 │ 1 │ 8 ┃ 6 │ 3 │   ┃ 9 │   │ 5 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 1 │   │ 3 ┃   │ 4 │ 6 ┃ 2 │   │ 7 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 9 │ 2 │ 7 ┃   │   │ 1 ┃   │ 6 │ 8 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 6 │ 4 ┃ 7 │   │ 9 ┃ 1 │   │   ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃ 9 │ 7 │ 2 ┃ 1 │ 3 │ 4 ┃   │ 5 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │ 4 ┃ 9 │ 2 │ 8 ┃   │   │ 3 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 1 │ 8 │ 3 ┃ 7 │ 5 │ 6 ┃   │   │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 8 │   │ 5 ┃ 6 │ 1 │ 2 ┃ 3 │   │ 4 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 6 │   │ 7 ┃ 4 │ 9 │   ┃   │ 8 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 2 │ 4 │ 1 ┃ 8 │ 7 │ 3 ┃ 9 │   │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │   │   ┃   │ 4 │ 9 ┃   │ 3 │ 1 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 4 │   │ 6 ┃ 3 │   │ 1 ┃   │ 9 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │   ┃   │ 6 │ 7 ┃ 5 │ 4 │ 8 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛

M Sudoku/puzzles.txt => Sudoku/puzzles.txt +437 -0
@@ 10,3 10,440 @@
1 9 5 7 4 8 3 2 6 6 7 4 3 2 9 1 5 8 2 8 3 5 1 6 4 7 9 5 4 6 1 8 3 2 9 7 9 1 7 4 6 2 5 8 3 8 3 2 9 7 5 6 1 4 3 6 8 2 9 1 7 4 5 7 2 9 6 5 4 8 3 1 4 5 1 8 3 7 9 6 2
7 3 4 6 5 8 9 1 2 8 2 6 1 4 9 3 5 7 1 9 5 7 3 2 6 4 8 9 6 7 5 2 3 1 8 4 5 4 2 9 8 1 7 3 6 3 1 8 4 6 7 5 2 9 4 7 3 2 9 5 8 6 1 6 8 1 3 7 4 2 9 5 2 5 9 8 1 6 4 7 3
5 6 9 7 2 4 1 3 8 2 4 3 8 6 1 7 5 9 8 1 7 5 3 9 6 2 4 1 8 6 4 5 7 3 9 2 3 7 4 2 9 6 8 1 5 9 2 5 3 1 8 4 6 7 7 9 2 6 8 3 5 4 1 4 3 1 9 7 5 2 8 6 6 5 8 1 4 2 9 7 3
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃ 4 │   │ 6 ┃ 3 │ 8 │ 1 ┃ 2 │ 5 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 2 │   │ 8 ┃ 6 │ 7 │ 5 ┃ 9 │   │ 3 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 3 │ 5 ┃ 2 │   │ 9 ┃   │ 6 │ 1 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 3 │ 8 │ 9 ┃   │   │ 6 ┃ 7 │ 2 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 1 │ 4 │   ┃ 5 │   │   ┃ 6 │   │ 9 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 6 │ 5 │ 2 ┃   │   │ 8 ┃   │   │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 8 │ 2 │   ┃ 1 │ 5 │ 7 ┃   │   │ 6 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 9 │   │   ┃ 8 │   │ 4 ┃ 5 │   │ 2 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │   ┃ 9 │ 6 │   ┃ 3 │ 1 │ 8 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃ 4 │   │   ┃   │   │   ┃ 9 │ 6 │ 3 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │   ┃ 3 │   │ 9 ┃   │ 7 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 3 │ 9 │   ┃ 1 │ 6 │   ┃ 5 │ 2 │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │ 4 │ 5 ┃ 2 │   │   ┃ 8 │   │ 1 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 9 │ 1 │ 2 ┃   │ 4 │   ┃ 7 │ 5 │ 6 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 8 │ 7 │   ┃ 6 │ 5 │   ┃ 4 │ 9 │ 2 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │ 5 │ 4 ┃ 7 │ 1 │   ┃ 3 │   │ 9 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 7 │   │ 9 ┃   │   │ 2 ┃ 6 │ 1 │ 5 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 1 │ 8 │ 6 ┃   │ 3 │ 5 ┃ 2 │ 4 │   ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃ 1 │ 4 │ 9 ┃ 8 │ 2 │ 6 ┃ 5 │ 3 │ 7 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 7 │   ┃ 3 │   │   ┃ 2 │ 9 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 2 │ 5 │   ┃ 9 │ 4 │ 7 ┃   │   │ 8 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │ 2 │   ┃   │ 5 │   ┃ 9 │   │ 1 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 9 │ 6 │ 5 ┃ 2 │ 7 │   ┃   │   │ 3 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 3 │ 1 │   ┃ 4 │ 9 │   ┃ 6 │   │ 2 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 5 │ 3 │   ┃ 7 │ 6 │ 2 ┃ 8 │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 7 │ 9 │   ┃ 5 │   │   ┃ 3 │   │ 6 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │ 6 ┃ 1 │ 3 │   ┃   │ 2 │ 5 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃   │   │   ┃ 9 │ 4 │   ┃   │ 1 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 5 │   │ 9 ┃ 7 │ 2 │   ┃   │ 8 │ 4 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 2 │ 6 │ 4 ┃   │ 8 │ 1 ┃ 7 │ 9 │ 3 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │   │   ┃ 1 │ 3 │ 2 ┃ 4 │ 7 │ 8 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 7 │   │   ┃ 4 │   │ 8 ┃ 1 │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 1 │   │ 8 ┃   │ 7 │   ┃ 3 │ 5 │ 2 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 6 │ 2 │ 1 ┃   │ 9 │ 4 ┃   │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 4 │   │ 5 ┃ 3 │ 1 │ 7 ┃ 8 │ 2 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 7 │ 3 ┃   │ 6 │   ┃ 9 │ 4 │ 1 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃   │ 4 │ 1 ┃ 9 │ 5 │ 2 ┃   │   │ 6 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │ 9 ┃   │   │   ┃ 7 │ 4 │ 5 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │ 8 ┃   │   │ 6 ┃ 2 │ 9 │ 1 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │   │   ┃ 5 │   │ 9 ┃   │ 2 │ 4 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 4 │ 9 │ 5 ┃ 2 │ 6 │ 1 ┃ 8 │ 3 │ 7 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 6 │   │   ┃ 7 │ 4 │ 3 ┃ 1 │ 5 │ 9 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 1 │ 5 │   ┃ 8 │   │ 7 ┃ 9 │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 8 │ 7 │ 3 ┃   │ 9 │ 5 ┃   │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │ 6 ┃   │ 3 │ 4 ┃ 5 │ 7 │ 8 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃ 9 │   │   ┃   │   │ 3 ┃   │ 1 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 1 │   │ 4 ┃   │ 7 │ 9 ┃ 8 │ 3 │ 6 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 2 │   │ 8 ┃ 5 │ 1 │   ┃ 7 │ 9 │ 4 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │   │   ┃ 1 │ 5 │   ┃ 9 │ 6 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 3 │ 7 │ 6 ┃ 9 │   │   ┃   │   │ 1 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 5 │   │   ┃ 6 │ 3 │ 2 ┃ 4 │   │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 8 │   │ 1 ┃ 3 │   │   ┃ 6 │ 7 │ 2 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 9 │ 3 ┃ 7 │   │ 4 ┃ 1 │ 5 │ 8 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 2 │ 5 ┃   │ 6 │ 1 ┃ 3 │ 4 │ 9 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃ 8 │   │   ┃ 2 │   │   ┃ 6 │ 3 │ 1 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │ 6 ┃   │ 3 │ 1 ┃ 9 │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 3 │ 7 ┃   │   │   ┃ 2 │ 8 │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 3 │ 8 │ 9 ┃ 6 │   │ 2 ┃   │ 7 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 4 │   ┃   │ 8 │ 3 ┃   │ 2 │ 9 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 2 │   │   ┃ 9 │ 4 │ 5 ┃ 8 │ 6 │ 3 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │   │ 8 ┃ 3 │ 6 │   ┃ 4 │ 5 │ 2 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 9 │ 6 │ 2 ┃ 5 │ 7 │   ┃ 3 │ 1 │ 8 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │ 3 ┃ 1 │ 2 │   ┃ 7 │ 9 │ 6 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃   │ 6 │ 3 ┃ 7 │ 9 │ 4 ┃ 8 │ 1 │ 5 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 5 │   │   ┃ 3 │ 1 │ 8 ┃ 2 │   │ 6 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 8 │   │   ┃   │   │   ┃   │ 7 │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 9 │ 7 │   ┃   │ 6 │ 3 ┃ 4 │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │ 2 ┃ 4 │ 8 │ 7 ┃ 6 │   │ 9 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 4 │ 8 │ 6 ┃ 2 │   │ 9 ┃   │   │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 7 │ 2 │ 9 ┃   │   │   ┃   │   │ 3 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 6 │ 5 │ 8 ┃ 9 │ 3 │ 2 ┃ 1 │ 4 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 3 │ 4 ┃ 6 │ 7 │ 5 ┃ 9 │ 2 │   ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃ 1 │   │ 5 ┃ 4 │   │   ┃   │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 4 │ 6 ┃ 5 │ 3 │   ┃ 8 │   │ 1 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 2 │ 3 ┃ 9 │   │ 1 ┃   │ 4 │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 4 │ 1 │ 7 ┃ 8 │   │ 3 ┃ 6 │   │ 2 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 6 │   │   ┃ 1 │ 9 │ 4 ┃   │ 3 │ 5 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 5 │   │ 9 ┃   │   │   ┃   │ 8 │ 4 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │ 5 │   ┃ 6 │ 8 │ 9 ┃   │ 1 │ 3 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 2 │ 9 │ 8 ┃ 3 │ 1 │ 5 ┃ 4 │ 6 │ 7 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 3 │   │ 1 ┃   │ 4 │   ┃   │ 5 │ 8 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃   │ 3 │ 4 ┃ 8 │   │   ┃   │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 5 │ 1 │   ┃ 3 │   │   ┃ 9 │ 8 │ 6 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │ 8 ┃ 9 │   │ 5 ┃   │ 4 │ 1 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 2 │ 5 │ 3 ┃ 1 │ 9 │ 4 ┃   │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 6 │   │ 1 ┃ 7 │ 3 │ 8 ┃ 5 │   │ 9 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 8 │   │   ┃   │ 5 │   ┃ 4 │ 1 │ 3 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 3 │ 8 │ 6 ┃   │ 7 │ 9 ┃   │ 5 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 1 │ 2 │   ┃   │ 8 │   ┃ 6 │ 9 │ 7 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 9 │ 7 ┃ 5 │ 6 │ 1 ┃ 8 │   │ 2 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃ 8 │ 7 │ 5 ┃   │ 6 │   ┃   │   │ 9 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │   ┃ 7 │ 8 │ 3 ┃   │   │ 1 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 3 │ 6 │ 1 ┃ 9 │   │ 2 ┃   │ 8 │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 4 │   │ 7 ┃   │   │ 6 ┃ 1 │ 9 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 9 │   │   ┃   │ 7 │ 1 ┃ 8 │ 4 │ 5 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 1 │   │ 2 ┃   │ 9 │ 5 ┃   │ 7 │ 6 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │ 1 │ 4 ┃ 3 │   │ 8 ┃   │ 5 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 7 │ 2 │ 3 ┃   │ 4 │ 9 ┃ 6 │   │ 8 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │ 8 ┃ 6 │ 1 │ 7 ┃ 4 │ 2 │ 3 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃   │ 4 │ 3 ┃ 8 │ 6 │   ┃ 1 │ 9 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │ 9 ┃ 5 │   │ 3 ┃ 4 │ 6 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 2 │   │   ┃ 4 │ 9 │ 1 ┃   │   │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 5 │   │ 4 ┃   │ 2 │   ┃ 9 │   │ 8 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 9 │ 2 │ 6 ┃ 7 │ 5 │ 8 ┃ 3 │ 4 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 8 │   │ 1 ┃   │ 3 │   ┃ 5 │ 2 │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │ 1 │ 8 ┃   │ 4 │   ┃ 6 │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 4 │ 5 │   ┃   │ 1 │ 9 ┃ 2 │ 8 │ 3 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 6 │ 9 │   ┃   │ 8 │ 5 ┃ 7 │ 1 │ 4 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃ 7 │ 4 │   ┃ 3 │   │ 9 ┃   │ 5 │ 2 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 9 │ 2 │   ┃ 8 │   │   ┃ 6 │ 4 │ 3 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 5 │   ┃ 1 │ 2 │   ┃   │ 7 │ 9 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │   │   ┃ 5 │ 1 │ 6 ┃ 9 │ 2 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 6 │   │ 2 ┃ 7 │   │   ┃   │ 1 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 1 │ 8 │ 5 ┃   │   │   ┃   │   │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │ 7 │   ┃ 2 │ 9 │ 1 ┃ 4 │ 6 │ 5 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 5 │ 6 │ 9 ┃ 4 │ 7 │ 3 ┃ 2 │ 8 │ 1 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 1 │ 4 ┃ 6 │   │ 5 ┃   │ 9 │ 7 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃   │ 5 │ 6 ┃ 2 │   │ 1 ┃ 8 │ 7 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 3 │   │   ┃ 5 │ 7 │ 8 ┃   │   │ 6 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 7 │ 8 │   ┃ 6 │ 4 │ 9 ┃   │ 5 │ 3 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 5 │ 9 │ 3 ┃ 7 │   │ 4 ┃   │ 8 │ 2 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 1 │ 6 │ 8 ┃   │   │ 5 ┃   │ 3 │ 7 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 2 │ 4 │ 7 ┃   │ 8 │ 6 ┃ 5 │   │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 8 │ 7 │ 1 ┃ 4 │   │   ┃   │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 6 │   │ 9 ┃ 1 │   │   ┃   │ 4 │ 8 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 4 │   │   ┃   │ 6 │ 2 ┃   │ 1 │ 9 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃   │ 9 │   ┃   │ 3 │ 5 ┃   │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 1 │ 3 ┃   │ 7 │ 4 ┃ 8 │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │   ┃   │ 8 │   ┃ 3 │ 2 │ 9 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 1 │ 8 │ 4 ┃ 3 │   │ 2 ┃ 6 │ 7 │ 5 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 5 │ 7 │   ┃   │ 6 │ 1 ┃   │ 4 │ 3 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 6 │ 3 │ 9 ┃ 5 │ 4 │   ┃   │   │ 1 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 9 │ 2 │ 8 ┃ 7 │ 5 │ 3 ┃   │ 6 │ 4 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 6 │ 1 ┃   │ 2 │   ┃ 5 │ 3 │ 8 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 3 │ 4 │   ┃ 6 │ 1 │   ┃   │ 9 │   ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃ 9 │ 4 │ 5 ┃ 6 │ 1 │   ┃   │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 6 │ 2 ┃ 8 │ 4 │   ┃ 9 │ 5 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 3 │ 1 │ 8 ┃ 5 │ 9 │   ┃ 6 │ 7 │ 4 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 6 │ 3 │   ┃ 2 │ 8 │ 5 ┃   │ 1 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 2 │ 8 │   ┃ 7 │   │   ┃ 4 │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 5 │ 9 │ 7 ┃   │ 6 │ 4 ┃ 2 │   │ 8 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 8 │ 5 │ 3 ┃   │   │ 6 ┃ 1 │ 4 │ 7 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 2 │   ┃ 3 │   │ 1 ┃   │   │ 6 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │ 6 ┃   │ 5 │ 8 ┃   │ 9 │   ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃ 8 │ 7 │   ┃ 4 │   │   ┃ 2 │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │   ┃ 3 │   │ 7 ┃   │ 1 │ 9 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 3 │ 4 │ 9 ┃ 1 │ 6 │ 2 ┃ 8 │ 7 │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 6 │ 5 │ 4 ┃ 2 │   │   ┃ 9 │ 8 │ 7 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 9 │ 3 │ 7 ┃ 6 │ 4 │   ┃   │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 8 │   ┃ 5 │ 7 │ 9 ┃   │   │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 2 │ 6 │   ┃   │ 5 │   ┃ 3 │ 9 │ 1 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 7 │ 1 │ 3 ┃   │ 2 │ 6 ┃ 5 │ 4 │ 8 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 4 │   │   ┃ 8 │ 1 │   ┃ 7 │ 2 │   ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃   │   │ 9 ┃ 5 │   │ 8 ┃ 1 │ 6 │ 3 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 3 │ 5 │   ┃   │   │ 4 ┃ 2 │ 7 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │   ┃ 2 │ 3 │ 9 ┃ 8 │   │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 9 │   │ 7 ┃ 4 │ 1 │ 6 ┃   │ 5 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 1 │ 8 │   ┃ 7 │ 9 │   ┃ 6 │ 2 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 5 │ 6 │ 4 ┃ 3 │ 8 │   ┃ 9 │ 1 │ 7 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │   │ 2 ┃   │ 5 │ 3 ┃ 7 │   │ 6 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 3 │ 6 ┃ 9 │   │ 1 ┃ 5 │   │ 2 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 8 │   │ 5 ┃   │   │ 7 ┃   │ 3 │ 1 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃ 4 │ 6 │   ┃   │   │ 7 ┃ 9 │ 5 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 2 │   │ 8 ┃   │   │ 9 ┃   │ 4 │ 7 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 7 │ 5 ┃ 4 │   │   ┃ 1 │ 3 │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │ 1 │ 4 ┃ 9 │   │   ┃ 2 │ 6 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 5 │ 3 ┃ 2 │   │ 6 ┃ 4 │ 7 │ 9 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 6 │ 9 │ 2 ┃   │ 7 │ 4 ┃ 3 │ 8 │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 3 │ 8 │   ┃ 6 │ 2 │   ┃ 7 │ 1 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 2 │ 6 ┃ 7 │ 4 │ 1 ┃   │ 9 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 1 │   │ 7 ┃   │ 9 │ 8 ┃   │ 2 │   ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃   │ 7 │ 2 ┃ 4 │ 9 │ 5 ┃ 8 │ 3 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 8 │ 4 │   ┃   │ 6 │   ┃ 9 │   │ 1 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 9 │ 6 ┃ 3 │ 1 │   ┃ 4 │ 2 │ 7 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │ 2 │ 9 ┃   │ 5 │   ┃ 7 │ 6 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 7 │   │ 5 ┃ 9 │ 4 │ 6 ┃   │ 1 │ 8 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 8 │ 1 ┃   │ 3 │ 2 ┃   │   │ 4 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 9 │   │ 4 ┃ 6 │   │   ┃ 1 │ 8 │ 2 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │ 8 ┃ 5 │ 2 │ 4 ┃   │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 6 │ 7 ┃   │ 8 │ 9 ┃   │   │ 5 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃ 2 │ 6 │ 8 ┃ 7 │   │ 5 ┃ 1 │   │ 3 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 7 │ 5 │ 4 ┃ 2 │   │ 3 ┃ 6 │   │ 8 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 3 │ 9 ┃   │ 4 │ 6 ┃ 5 │ 7 │ 2 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │ 7 │ 3 ┃ 9 │ 2 │ 4 ┃ 8 │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 4 │ 2 ┃ 6 │ 5 │   ┃ 7 │   │ 9 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │ 5 ┃   │   │ 7 ┃ 2 │ 6 │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 3 │   │   ┃ 1 │ 6 │   ┃   │ 8 │ 5 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │ 1 ┃ 5 │ 7 │   ┃   │ 2 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 5 │ 2 │ 6 ┃ 4 │   │   ┃   │   │ 7 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃ 7 │   │ 6 ┃ 3 │   │ 9 ┃ 2 │   │ 1 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │   ┃   │   │ 8 ┃   │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 5 │ 8 │   ┃ 1 │ 7 │   ┃ 9 │   │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │ 6 │ 8 ┃   │   │ 4 ┃   │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 5 │ 1 ┃ 8 │ 6 │ 3 ┃ 7 │ 9 │ 4 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 4 │   │ 7 ┃ 5 │ 1 │   ┃ 8 │   │ 6 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃   │ 2 │ 3 ┃ 6 │ 8 │ 1 ┃ 4 │ 7 │ 5 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 6 │ 1 │ 5 ┃ 9 │ 4 │ 7 ┃ 3 │ 2 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 7 │ 4 ┃   │ 3 │ 5 ┃   │ 1 │ 9 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛
┏━━━┯━━━┯━━━┳━━━┯━━━┯━━━┳━━━┯━━━┯━━━┓
┃ 5 │   │ 7 ┃ 3 │ 4 │   ┃   │ 9 │ 6 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │ 6 │   ┃ 5 │   │   ┃ 4 │ 3 │ 2 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 3 │ 8 │ 4 ┃ 9 │ 6 │ 2 ┃ 7 │   │ 1 ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 8 │   │   ┃ 6 │ 5 │ 4 ┃ 2 │ 1 │ 7 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃   │   │ 6 ┃ 2 │ 8 │ 3 ┃ 9 │ 4 │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 2 │ 4 │   ┃   │   │ 9 ┃ 3 │   │   ┃
┣━━━┿━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫
┃ 1 │   │ 3 ┃ 8 │   │ 6 ┃   │   │   ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 6 │ 5 │   ┃   │   │ 7 ┃ 1 │ 8 │ 9 ┃
┠───┼───┼───╂───┼───┼───╂───┼───┼───┨
┃ 4 │   │ 8 ┃ 1 │ 2 │   ┃   │   │ 3 ┃
┗━━━┷━━━┷━━━┻━━━┷━━━┷━━━┻━━━┷━━━┷━━━┛