File: 8q2.azm

package info (click to toggle)
zoem 11-166-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 2,476 kB
  • sloc: ansic: 18,291; sh: 785; makefile: 111
file content (63 lines) | stat: -rw-r--r-- 1,413 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63


\if{\let{!\defined{key}{N} || \N < 1}}{
   \write{stderr}{device}{Use e.g. zoem -i 8q2 -s N=9 to solve the 9-queen problem\@{\N}}
   \set{N}{8}
}{}
\setx{N}{\let{floor(\N)}}

\def{pp#1}{\%{ass}{\1}}

\set{ptr}{0}
\set{%{ass}{-1}}{0}

\setx{row_odd}{\seq{n}{0}{\N}{\if{\let{\n%2}}{.}{-} }}
\setx{row_even}{\seq{n}{0}{\N}{\if{\let{\n%2}}{-}{.} }}

\set{n}{0}
\while{\let{\n<=\N}}{
   \set{%{ass}{\n}}{0}
   \setx{n}{\let{\n+1}}
}
\set{n}{0}
\while{\let{\n<=\N}}{
   \setx{n}{\let{\n+1}}
}

\set{id}{0}

\while{\let{\ptr>=0}}{
   \set{i}{0}
   \while{\let{
         \i<\ptr
         && \%{ass}{\i} != \%{ass}{\ptr}
         && \%{ass}{\i} - \%{ass}{\ptr} != \ptr - \i
         && \%{ass}{\i} - \%{ass}{\ptr} != \i - \ptr
      }
   }{\setx{i}{\let{\i+1}}}
   \branch{
      {\let{\i==\N-1}}
      {  \set{t}{0}
         \while{\let{\t<\N}}{
            \setx{t2}{\if{\let{\t % 2}}{\row_odd}{\row_even}}
            \set{{start}{\let{2*\pp{\t}}}{width}{1}}{t2}{W}
            \write{\__fnout__}{device}{\t2\@{\n}}
            \setx{t}{\let{\t+1}}
         }
         \setx{id}{\let{\id+1}}
         \write{\__fnout__}{device}{(\id)\@{\P}}
      }
      {\let{\i==\ptr}}
      {  \setx{ptr}{\let{\ptr+1}}
         \set{%{ass}{\ptr}}{-1}
      }
   }
   \while{\let{\ptr>=0 && \%{ass}{\ptr} == \N-1}}{
      \set{%{ass}{\ptr}}{0}
      \setx{ptr}{\let{\ptr-1}}
   }
   \setx{%{ass}{\ptr}}{\let{\%{ass}{\ptr}+1}}
}