Sudoku: Difference between revisions
→{{header|Perl 6}}: style
(→{{header|Groovy}}: minor changes, run on faster machine) |
(→{{header|Perl 6}}: style) |
||
Line 3,640:
=={{header|Perl 6}}==
<lang perl6>use v6;
sub solve(@A is copy) {▼
constant IJK = [
for ^@A -> $i {▼
grep { [||] IJK[]».($_) Z== IJK[]».($i) }, ^@A
}▼
}▼
sub show(@A is copy) {
say join "\n\n", (
join "\n", (
join ' ', (
join ' ', @A.shift xx 3
) xx 3
) xx 3
) xx 3;
show solve <
5 3 0 0 2 4 7 0 0
0 0 2 0 0 0 8 0 0
Line 3,655 ⟶ 3,683:
9 6 0 0 1 0 3 0 0
0 5 0 6 9 0 0 1 0
>;</lang>
▲my &I = * div 9; # line number
▲my &J = * % 9; # column number
▲my &K = { ($_ div 27) * 3 + $_ % 9 div 3 }; # bloc number
▲sub solve {
▲ for ^@A -> $i {
▲ next if @A[$i];
▲ my @taken-values = @A[
▲ }, ^@A
▲ for grep none(@taken-values), 1..9 {
▲ @A[$i] = $_;
▲ solve;
▲ }
▲ return @A[$i] = 0;
▲ }
▲ my $i = 1;
▲ for ^@A {
▲ }
▲}
{{out}}
|