tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
51
Task/N-queens-problem/ALGOL-68/n-queens-problem.alg
Normal file
51
Task/N-queens-problem/ALGOL-68/n-queens-problem.alg
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
INT ofs = 1, # Algol68 normally uses array offset of 1 #
|
||||
dim = 8; # dim X dim chess board #
|
||||
[ofs:dim+ofs-1]INT b;
|
||||
|
||||
PROC unsafe = (INT y)BOOL:(
|
||||
INT i, t, x;
|
||||
x := b[y];
|
||||
FOR i TO y - LWB b DO
|
||||
t := b[y - i];
|
||||
IF t = x THEN break true
|
||||
ELIF t = x - i THEN break true
|
||||
ELIF t = x + i THEN break true
|
||||
FI
|
||||
OD;
|
||||
FALSE EXIT
|
||||
break true:
|
||||
TRUE
|
||||
);
|
||||
|
||||
INT s := 0;
|
||||
|
||||
PROC print board = VOID:(
|
||||
INT x, y;
|
||||
print((new line, "Solution # ", s+:=1, new line));
|
||||
FOR y FROM LWB b TO UPB b DO
|
||||
FOR x FROM LWB b TO UPB b DO
|
||||
print("|"+(b[y]=x|"Q"|: ODD(x+y)|"/"|" "))
|
||||
OD;
|
||||
print(("|", new line))
|
||||
OD
|
||||
);
|
||||
|
||||
main: (
|
||||
INT y := LWB b;
|
||||
b[LWB b] := LWB b - 1;
|
||||
FOR i WHILE y >= LWB b DO
|
||||
WHILE
|
||||
b[y]+:=1;
|
||||
# BREAK # IF b[y] <= UPB b THEN unsafe(y) ELSE FALSE FI
|
||||
DO SKIP OD;
|
||||
IF b[y] <= UPB b THEN
|
||||
IF y < UPB b THEN
|
||||
b[y+:=1] := LWB b - 1
|
||||
ELSE
|
||||
print board
|
||||
FI
|
||||
ELSE
|
||||
y-:=1
|
||||
FI
|
||||
OD
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue