Sulprobil
Search…
Eight Queens Puzzle
Here you can find a Perl implementation for the eight queens puzzle:
The eight queens puzzle is the problem of placing eight chess queens on an 8×8 chessboard so that no two queens can take each other. Taking rotations and mirroring into account, there is only one symmetrical solution:
Please read my Disclaimer.
1
# Die Lösungen des Acht-Damen-Problems
2
# aus: Niklaus Wirth; Algorithmen und Datenstrukturen; B. G. Teubner, Stuttgart, S. 172
3
#
4
# 8 Damen sollen auf dem Schachbrett so aufgestellt werden, dass sie sich
5
# nicht schlagen können.
6
#
7
# ܁bertragen von PASCAL in PERL von B. Plumhoff
8
#
9
10
sub prnt {
11
for ($k=1; $k<9; $k++) {
12
print $x[$k]." ";
13
}
14
print "\n";
15
}
16
17
sub try {
18
local($i, $j) = @_;
19
for ($j=1; $j<9; $j++) {
20
if ($a[$j] && $b[$i+$j] && $c[7+$i-$j]) {
21
$x[$i] = $j;
22
$a[$j] = $b[$i+$j] = $c[7+$i-$j] = 0;
23
if ($i < 8) {
24
&try($i+1);
25
} else {
26
&prnt;
27
}
28
$a[$j] = $b[$i+$j] = $c[7+$i-$j] = 1;
29
}
30
}
31
}
32
33
for ($i=1; $i<9; $i++) { $a[$i] = 1; }
34
for ($i=2; $i<17; $i++) { $b[$i] = 1; }
35
for ($i=0; $i<15; $i++) { $c[$i] = 1; }
36
print "\nDie Lösungen des Acht-Damen-Problems\n";
37
print '=' x 36;
38
print "\n" x 2;
39
&try(1);
Copied!
Last modified 1yr ago
Copy link