Sudoku: Difference between revisions

m
→‎{{header|Sidef}}: improved and fixed the code to work with the latest version of Sidef
m (→‎{{header|Sidef}}: improved and fixed the code to work with the latest version of Sidef)
Line 7,014:
=={{header|Sidef}}==
{{trans|Perl 6}}
<lang ruby>__USE_INTNUM__func _check(i, j) is cached {
var (id, im) = i.divmod(9);
var (jd, jm) = j.divmod(9);
 
jd == id && return true;
jm == im && return true;
 
var id2 = int(id/3);
var jd2 = int(jd/3);
 
jd2 == id2 || return false;
 
int(jm/3) == int(im/3)
}
 
func solve(board) {
board.range.each { |i|
!board[i] ||&& next;
var t = board[.items(
board.range.grep {|j|
_check(i, (j.div(9) == i.div(9)) ||
(j}..mod(9) == i.mod(9)) ||
]);
(j.div(27) == i.div(27) &&
(j1..mod(9).div(3) ==-> i.modgrep {!(9).div(3))~~t)}
-> each {|k| board[i] = k; solve(board) };
];
1..9 grep {!(.~~t)}
each {|k| board[i] = k; solve(board)};
board[i] = 0;
return;
};
 
board.range.each { |i|
print "#{board[i]} ";
{print " "} if (3 -> divides(i+1 %% 3));
{print "\n"} if (9 -> divides(i+1 %% 9));
{print "\n"} if (27 -> divides(i+1 %% 27));
};
}
 
var board = %wi(
5 3 0 0 2 4 7 0 0
0 0 2 0 0 0 8 0 0
Line 7,053 ⟶ 7,063:
9 6 0 0 1 0 3 0 0
0 5 0 6 9 0 0 1 0
);
).map{.to_i};
 
solve(board);</lang>
Line 7,068 ⟶ 7,078:
9 6 7 4 1 5 3 2 8
2 5 3 6 9 8 4 1 7 </pre>
 
=={{header|Swift}}==
{{trans|Java}}
2,747

edits