01.10 c 8-Queens problem in Focal-8
01.20 c Hacked by Akira KIDA, SDI00379@niftyserve.or.jp

10.10 c main
10.20 s nQueen = 8
10.30 d 20
10.40 s Count = 0; s pendans = 0
10.50 s n = 0; d 30
10.60 d 60
10.70 t %1.0, "Total ", Count, " answers", !
10.80 q

20.10 c initialize
20.20 f i = 0, nQueen - 1; s Pos(i) = 0; s Row(i) = 1
20.40 f i = 0, nQueen * 2 - 2; s Up(i) = 1
20.50 f i = 0, nQueen * 2 - 2; s Down(i - nQueen + 1) = 1
20.60 s k = 0
20.70 r

30.10 c generate(n)
30.20 c make sure to use individual control variables in each nest levels
30.30 f k(n) = 0, nQueen - 1; d 40
30.40 r

40.10 c generate(n) body
40.20 i (-(Row(k(n)) * Up(n + k(n)) * Down(n - k(n)))) 40.30; r
40.30 s Pos(n) = k(n)
40.40 i (n - nQueen + 1) 40.50; d 50; r
40.50 s Row(k(n)) = 0; s Up(n + k(n)) = 0; s Down(n - k(n)) = 0
40.60 s n = n + 1; d 30; s n = n - 1
40.70 s Down(n - k(n)) = 1; s Up(n + k(n)) = 1; s Row(k(n)) = 1
40.80 r

50.10 c answer
50.20 s Count = Count + 1; s pendans = pendans + 1
50.30 f i = 0, nQueen - 1; s ans(pendans * nQueen + i) = Pos(i)
50.40 i (pendans - 3) 50.50; d 60
50.50 r

60.10 c flush answer
60.20 i (-pendans) 60.30; r
60.30 f a = 1, pendans; t %1.0, "	Solution #", Count - pendans + a, "	"
60.40 t !
60.50 f i = 0, nQueen - 1; d 70
60.60 t ! ; s pendans = 0
60.70 r

70.10 c answer inner loop
70.20 f a = 1, pendans; d 80
70.30 t !
70.40 r

80.10 t "	"
80.20 f j = 0, nQueen - 1; d 90
80.30 r

90.10 c answer print element
90.20 i (ans(a * nQueen + i) - j) 90.50, 90.30, 90.50
90.30 t " Q"
90.40 r
90.50 t " ."
90.60 r
