local solutions={} function NQueen(q,r) if r==N+1 then local qsave={} for e=1,N do qsave[e]=q[e] end solutions[#solutions+1]=qsave else for j=1,N do valid=true for i=1,(r-1) do if ((q[i]==j or math.abs(q[i]-j)==math.abs(r-i)) and r>1) then valid=false end end if valid then q[r]=j NQueen(q,r+1) end end end end Dq={} for i=1,N do Dq[i]=0 end NQueen(Dq,1) q=solutions[1] -- on envoie tout à TeX tex.print("Il y a "..#solutions.." solutions pour N="..N.."\\dots\\par") tex.print("\\begin{tikzpicture}\\draw (0,0) grid ("..N..","..N..");") for i=1,N do for j=1,N do if ((i%2 == 0) and (j%2==1)) or ((i%2 == 1) and (j%2==0)) then tex.print("\\fill[black!20] ("..(i-1)..","..(j-1)..") rectangle ("..i..","..j..");") end if q[j]==i then tex.print("\\node[scale=2] at("..(i-0.5)..","..(j-0.5)..") {\\wD};") end end end tex.print("\\end{tikzpicture}")