tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
30
Task/N-queens-problem/Perl-6/n-queens-problem.pl6
Normal file
30
Task/N-queens-problem/Perl-6/n-queens-problem.pl6
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
sub MAIN($N = 8) {
|
||||
sub collision(@field, $row) {
|
||||
for ^$row -> $i {
|
||||
my $distance = @field[$i] - @field[$row];
|
||||
return 1 if $distance == any(0, $row - $i, $i - $row);
|
||||
}
|
||||
0;
|
||||
}
|
||||
sub search(@field is rw, $row) {
|
||||
if $row == $N {
|
||||
return @field;
|
||||
} else {
|
||||
for ^$N -> $i {
|
||||
@field[$row] = $i;
|
||||
if !collision(@field, $row) {
|
||||
my @r = search(@field, $row + 1) and return @r;
|
||||
}
|
||||
}
|
||||
}
|
||||
Nil;
|
||||
}
|
||||
for 0 .. $N / 2 {
|
||||
if my @f = search [$_], 1 {
|
||||
say ~@f;
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
# output:
|
||||
0 4 7 5 2 6 1 3
|
||||
Loading…
Add table
Add a link
Reference in a new issue