begin comment Demonstratieprogramma: 8 dames op schaakbord. L. Meertens, R 1082. Maakt gebruik van de exacte representeerbaarheid in real-voorstelling van integerwaarden tot 100000000; integer kol, rij, k; real r0, s1, r3, s3, r1, s0, negens; integer array D[1 : 8]; real array R0, S1, R3, S3, R1, MT, TM[1 : 8]; Boolean array O[1 : 8], NO[-7 : 7], ZO[2 : 16]; NLCR; NLCR; MT[1]:= TM[8]:= 1; for k:= 2 step 1 until 8 do MT[k]:= TM[9 - k]:= 10 * MT[k - 1]; for k:= 1 step 1 until 8 do O[k]:= true; for k:= -7 step 1 until 7 do NO[k]:= true; for k:= 2 step 1 until 16 do ZO[k]:= true; kol:= 1; r0:= 0; s1:= r3:= s3:= r1:= negens:= 99999999; HKOL: R0[kol]:= r0; S1[kol]:= s1; R3[kol]:= r3; S3[kol]:= s3; R1[kol]:= r1; rij:= 1; HRIJ: if O[rij] then begin if ZO[kol + rij] then begin if NO[kol - rij] then begin D[kol]:= rij; r0:= r0 + TM[kol] * rij; s1:= s1 + TM[rij] * (kol - 9); if r0 <= s1 then begin r3:= r3 + MT[rij] * (kol - 9); if r0 <= r3 then begin s3:= s3 - MT[rij] * kol; if r0 <= s3 then begin r1:= r1 - TM[rij] * kol; if r0 <= r1 then begin if kol = 8 then begin if D[1] < rij then begin s0:= INPROD (k, 1, 8, MT[k], D[k]); if r0 + s0 <= negens then begin ABSFIXT (8, 0, r0); ABSFIXT (8, 0, s0); if r1 != r0 then begin ABSFIXT (8, 0, r1); ABSFIXT (8, 0, s1); if r0 + s0 != negens then begin ABSFIXT (8, 0, negens - s0); ABSFIXT (8, 0, negens - r0); ABSFIXT (8, 0, r3); ABSFIXT (8, 0, s3) end end; NLCR end end; go to LKOL end else begin O[rij]:= false; ZO[kol + rij]:= false; NO[kol - rij]:= false; kol:= kol + 1; go to HKOL end end; r1:= R1[kol] end; s3:= S3[kol] end; r3:= R3[kol] end; s1:= S1[kol]; r0:= R0[kol] end end end; if rij = 8 then LKOL: begin kol:= kol - 1; rij:= D[kol]; O[rij]:= true; ZO[kol + rij]:= true; NO[kol - rij]:= true; if rij = 8 then go to LKOL; r0:= R0[kol]; s1:= S1[kol]; r3:= R3[kol]; s3:= S3[kol]; r1:= R1[kol] end; if kol = 1 then begin if rij = 4 then go to KLAAR end; rij:= rij + 1; go to HRIJ; KLAAR: NLCR; PRINTTEXT ("einde") end