scc

simple c99 compiler
git clone git://git.simple-cc.org/scc

0041-queen.c (1148B)

```      1 int *calloc(int, int);
2
3 int N;
4 int *t;
5
6 int
7 chk(int x, int y)
8 {
9         int i;
10         int r;
11
12         for (r=i=0; i<8; i++) {
13                 r = r + t[x + 8*i];
14                 r = r + t[i + 8*y];
15                 if (x+i < 8 & y+i < 8)
16                         r = r + t[x+i + 8*(y+i)];
17                 if (x+i < 8 & y-i >= 0)
18                         r = r + t[x+i + 8*(y-i)];
19                 if (x-i >= 0 & y+i < 8)
20                         r = r + t[x-i + 8*(y+i)];
21                 if (x-i >= 0 & y-i >= 0)
22                         r = r + t[x-i + 8*(y-i)];
23         }
24         return r;
25 }
26
27 int
28 go(int n, int x, int y)
29 {
30         if (n == 8) {
31                 N++;
32                 return 0;
33         }
34         for (; y<8; y++) {
35                 for (; x<8; x++)
36                         if (chk(x, y) == 0) {
37                                 t[x + 8*y]++;
38                                 go(n+1, x, y);
39                                 t[x + 8*y]--;
40                         }
41                 x = 0;
42         }
43 	return 0;
44 }
45
46 int
47 main()
48 {
49         t = calloc(64, sizeof(int));
50         go(0, 0, 0);
51         if(N != 92)
52         	return 1;
53         return 0;
54 }
55
```