]> git.sur5r.net Git - cc65/blob - test/ref/8q.c
added tests as prepared by oliver
[cc65] / test / ref / 8q.c
1 /*
2   !!DESCRIPTION!! solves the "8 queens" chess problem
3   !!ORIGIN!!      LCC 4.1 Testsuite
4   !!LICENCE!!     own, freely distributeable for non-profit. read CPYRIGHT.LCC
5 */
6
7 int up[15], down[15], rows[8], x[8];
8 void queens(int c);
9 void print(void);
10
11 int main(void)
12 {
13         int i;
14         for (i = 0; i < 15; i++)
15                 up[i] = down[i] = 1;
16         for (i = 0; i < 8; i++)
17                 rows[i] = 1;
18         queens(0);
19         return 0;
20 }
21
22 void queens(int c)
23 {
24         int r;
25
26         for (r = 0; r < 8; r++)
27                 if (rows[r] && up[r-c+7] && down[r+c]) {
28                         rows[r] = up[r-c+7] = down[r+c] = 0;
29                         x[c] = r;
30                         if (c == 7)
31                                 print();
32                         else
33                                 queens(c + 1);
34                         rows[r] = up[r-c+7] = down[r+c] = 1;
35                 }
36 }
37
38 void print(void)
39 {
40         int k;
41
42         for (k = 0; k < 8; k++) {
43                 printf("%c", x[k]+'1');
44                 if(k<7) printf(" ");
45         }
46         printf("\n");
47 }