[loop] input "How many queens (N>=4)";n if n < 4 then print "Must be greater than 4" goto [loop] end if dim plot$(100,100) dim q(n+20) dim e(n+20) dim o(n+20) r=n mod 6 if r<>2 and r<>3 then gosub [samp] goto [shoBoard] end if for i=1 to int(n/2) e(i) = 2 * i next for i=1 to int((n/2)+.5) o(i) = 2 *i-1 next if r = 2 then gosub [edt2] if r = 3 then gosub [edt3] s = 1 for i=1 to n if e(i)>0 then q(s) = e(i) s = s+1 end if next for i=1 to n if o(i) > 0 then q(s) = o(i) s = s + 1 end if next ' print board [shoBoard] cls for i = 1 to n plot$(i,26-q(i)) = "*" plot$(i,24-n) = chr$(96+i) plot$(n+1,26-i) = str$(i) next i for ii = 1 to 100 for jj = 1 to 100 print left$(plot$(jj,ii)+" ",1); next jj print next ii end ' the simple case [samp] p = 1 for i = 1 to n if i mod 2=0 then q(p) = i p = p + 1 end if next i for i = 1 to n if i mod 2 then q(p) = i p = p + 1 end if next return ' edit list when remainder is 2 [edt2] for i=1 to n if o(i) = 3 then o(i) = 1 else if o(i)=1 then o(i) = 3 end if if o(i) = 5 then o(i)= o(i) -1 else if o(i) = 0 then o(i) = 5 return end if end if next ' edit list when remainder is 3 [edt3] for i = 1 to n if e(i) = 2 then e(i) = e(i)-1 else if e(i) = 0 then e(i) = 2 goto [more] end if end if next i ' edit list some more [more] for i = 1 to n if (o(i)=1 or o(i)=3) then o(i) = o(i)-1 else if o(i) = 0 then o(i) = 1 o(i+1) = 3 return end if end if next