Another update from ingydotnet^djgoku
This commit is contained in:
parent
91df62d461
commit
948b86eafa
7604 changed files with 108452 additions and 22726 deletions
110
Task/N-queens-problem/360-Assembly/n-queens-problem.360
Normal file
110
Task/N-queens-problem/360-Assembly/n-queens-problem.360
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
* N-queens problem 04/09/2015
|
||||
NQUEENS PROLOG
|
||||
LA R9,1 n=1
|
||||
LOOPN CH R9,L do n=1 to l
|
||||
BH ELOOPN if n>l then exit loop
|
||||
SR R8,R8 m=0
|
||||
LA R10,1 i=1
|
||||
LR R5,R9 n
|
||||
SLA R5,1 n*2
|
||||
BCTR R5,0 r=2*n-1
|
||||
E40 CR R10,R9 if i>n
|
||||
BH E80 then goto e80
|
||||
LR R11,R10 j=i
|
||||
E50 LR R1,R10 i
|
||||
SLA R1,1 i*2
|
||||
LA R6,A-2(R1) r6=@a(i)
|
||||
LR R1,R11 j
|
||||
SLA R1,1 j*2
|
||||
LA R7,A-2(R1) r7=@a(j)
|
||||
MVC Z,0(R6) z=a(i)
|
||||
MVC Y,0(R7) y=a(j)
|
||||
LR R3,R10 i
|
||||
SH R3,Y -y
|
||||
AR R3,R9 p=i-y+n
|
||||
LR R4,R10 i
|
||||
AH R4,Y +y
|
||||
BCTR R4,0 q=i+y-1
|
||||
MVC 0(2,R6),Y a(i)=y
|
||||
MVC 0(2,R7),Z a(j)=z
|
||||
LR R1,R3 p
|
||||
SLA R1,1 p*2
|
||||
LH R2,U-2(R1) u(p)
|
||||
LTR R2,R2 if u(p)<>0
|
||||
BNE E60 then goto e60
|
||||
LR R1,R4 q
|
||||
AR R1,R5 q+r
|
||||
SLA R1,1 (q+r)*2
|
||||
LH R2,U-2(R1) u(q+r)
|
||||
C R2,=F'0' if u(q+r)<>0
|
||||
BNE E60 then goto e60
|
||||
LR R1,R10 i
|
||||
SLA R1,1 i*2
|
||||
STH R11,S-2(R1) s(i)=j
|
||||
LA R0,1 r0=1
|
||||
LR R1,R3 p
|
||||
SLA R1,1 p*2
|
||||
STH R0,U-2(R1) u(p)=1
|
||||
LR R1,R4 q
|
||||
AR R1,R5 q+r
|
||||
SLA R1,1 (q+r)*2
|
||||
STH R0,U-2(R1) u(q+r)=1
|
||||
LA R10,1(R10) i=i+1
|
||||
B E40 goto e40
|
||||
E60 LA R11,1(R11) j=j+1
|
||||
CR R11,R9 if j<=n
|
||||
BNH E50 then goto e50
|
||||
E70 BCTR R11,0 j=j-1
|
||||
CR R11,R10 if j=i
|
||||
BE E90 goto e90
|
||||
LR R1,R10 i
|
||||
SLA R1,1 i*2
|
||||
LA R6,A-2(R1) r6=@a(i)
|
||||
LR R1,R11 j
|
||||
SLA R1,1 j*2
|
||||
LA R7,A-2(R1) r7=@a(j)
|
||||
MVC Z,0(R6) z=a(i)
|
||||
MVC 0(2,R6),0(R7) a(i)=a(j)
|
||||
MVC 0(2,R7),Z a(j)=z;
|
||||
B E70 goto e70
|
||||
E80 LA R8,1(R8) m=m+1
|
||||
E90 BCTR R10,0 i=i-1
|
||||
LTR R10,R10 if i=0
|
||||
BZ ZERO then goto zero
|
||||
LR R1,R10 i
|
||||
SLA R1,1 i*2
|
||||
LH R2,A-2(R1) r2=a(i)
|
||||
LR R3,R10 i
|
||||
SR R3,R2 -a(i)
|
||||
AR R3,R9 p=i-a(i)+n
|
||||
LR R4,R10 i
|
||||
AR R4,R2 +a(i)
|
||||
BCTR R4,0 q=i+a(i)-1
|
||||
LR R1,R10 i
|
||||
SLA R1,1 i*2
|
||||
LH R11,S-2(R1) j=s(i)
|
||||
LA R0,0 r0=0
|
||||
LR R1,R3 p
|
||||
SLA R1,1 p*2
|
||||
STH R0,U-2(R1) u(p)=0
|
||||
LR R1,R4 q
|
||||
AR R1,R5 q+r
|
||||
SLA R1,1 (q+r)*2
|
||||
STH R0,U-2(R1) u(q+r)=0
|
||||
B E60 goto e60
|
||||
ZERO XDECO R9,PG+0 edit n
|
||||
XDECO R8,PG+12 edit m
|
||||
XPRNT PG,24 print buffer
|
||||
LA R9,1(R9) n=n+1
|
||||
B LOOPN loop do n
|
||||
ELOOPN EPILOG
|
||||
L DC H'12' input value
|
||||
A DC H'01',H'02',H'03',H'04',H'05',H'06'
|
||||
DC H'07',H'08',H'09',H'10',H'11',H'12'
|
||||
U DC 46H'0'
|
||||
S DS 12H
|
||||
Z DS H
|
||||
Y DS H
|
||||
PG DS CL24 buffer
|
||||
YREGS
|
||||
END NQUEENS
|
||||
Loading…
Add table
Add a link
Reference in a new issue