tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
16
Task/N-queens-problem/Icon/n-queens-problem-1.icon
Normal file
16
Task/N-queens-problem/Icon/n-queens-problem-1.icon
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
procedure main()
|
||||
write(q(1), " ", q(2), " ", q(3), " ", q(4), " ", q(5), " ", q(6), " ", q(7), " ", q(8))
|
||||
end
|
||||
|
||||
procedure q(c)
|
||||
static udiag, ddiag, row
|
||||
|
||||
initial {
|
||||
udiag := list(15, 0)
|
||||
ddiag := list(15, 0)
|
||||
row := list(8, 0)
|
||||
}
|
||||
|
||||
every 0 = row[r := 1 to 8] = ddiag[r + c - 1] = udiag[8 + r - c] do # test if free
|
||||
suspend row[r] <- ddiag[r + c - 1] <- udiag[8 + r - c] <- r # place and yield
|
||||
end
|
||||
3
Task/N-queens-problem/Icon/n-queens-problem-2.icon
Normal file
3
Task/N-queens-problem/Icon/n-queens-problem-2.icon
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
procedure main()
|
||||
every write(q(1), " ", q(2), " ", q(3), " ", q(4), " ", q(5), " ", q(6), " ", q(7), " ", q(8))
|
||||
end
|
||||
35
Task/N-queens-problem/Icon/n-queens-problem-3.icon
Normal file
35
Task/N-queens-problem/Icon/n-queens-problem-3.icon
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
global n, rw, dd, ud
|
||||
|
||||
procedure main(args)
|
||||
n := integer(args[1]) | 8
|
||||
rw := list(n)
|
||||
dd := list(2*n-1)
|
||||
ud := list(2*n-1)
|
||||
solvequeen(1)
|
||||
end
|
||||
|
||||
procedure solvequeen(c)
|
||||
if (c > n) then return show()
|
||||
else suspend placequeen(c) & solvequeen(c+1)
|
||||
end
|
||||
|
||||
procedure placequeen(c)
|
||||
suspend (/rw[r := 1 to n] <- /dd[r+c-1] <- /ud[n+r-c] <- c)
|
||||
end
|
||||
|
||||
procedure show()
|
||||
static count, line, border
|
||||
initial {
|
||||
count := 0
|
||||
line := repl("| ",n) || "|"
|
||||
border := repl("----",n) || "-"
|
||||
}
|
||||
write("solution: ", count+:=1)
|
||||
write(" ", border)
|
||||
every line[4*(!rw - 1) + 3] <- "Q" do {
|
||||
write(" ", line)
|
||||
write(" ", border)
|
||||
}
|
||||
write()
|
||||
return # Comment out to see all possible solutions
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue