blob: 8d20a4d301c7f967a1a9fe1dddef7a151cc4327b (
plain)
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
64
65
66
67
68
69
70
71
72
73
74
|
/* 8queens - straightforward translation of pascal version */
#define TRUE 1
#define FALSE 0
int i;
char a[8],b[15],c[15],x[8];
main()
{
for (i=0;i<8;i++)
a[i]=TRUE;
for (i=0;i<15;i++)
b[i]=TRUE;
for (i=0;i<15;i++)
c[i]=TRUE;
try(0);
}
print()
{
int k;
for (k=0;k<8;k++)
write(x[k]);
writeln();
}
write(i)
int i;
{
{
#asm
LDA #$20
JSR $E820
LDD .i,S
JSR $C682
#endasm
}
}
writeln()
{
{
#asm
LDA #13
JSR $E820
LDA #10
JSR $E820
#endasm
}
}
try(i)
int i;
{
int j;
for(j=0;j<8;j++)
if (a[j] && b[i+j] && c[7+i-j])
{
x[i]=j;
a[j]=FALSE;
b[i+j]=FALSE;
c[7+i-j]=FALSE;
if (i<7)
try(i+1);
else
print();
a[j]=TRUE;
b[i+j]=TRUE;
c[7+i-j]=TRUE;
}
}
|