Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [https://www.wolframcloud.com/objects/paralesely/Published/a.nb][1]
- Timing[n=8;
- board=Table[0,{i,n},{j,n}];
- solutions={};
- tt=0;tt1={};
- For[i=1,i<=n,i++,
- For[j=1,j<=n,j++,
- If[board[[i,j]]==0,
- board[[i,j]]=Q;
- (*Row*)Table[If[k!=j,board[[i,k]]=board[[i,k]]+1],{k,1,n}];
- (*Column*)Table[If[k!=i ,board[[k,j]]=board[[k,j]]+1],{k,1,n}];
- (*lDiagonalLower======================*)
- k=i+1;
- l=j+1;
- While[k!=n+1&&l!=n+1,board[[k,l]]=board[[k,l]]+1;k++;l++];
- ( *rDiagonalLower======================*)
- k=i+1;
- l=j-1;
- While[k<= n&&l>= 1,board[[k,l]]=board[[k,l]]+1;k++;l--];
- (*====================================*)
- ];
- ];
- If[i==n,
- solution={};
- Table[If[MemberQ[board[[row]],Q],posQ=Position[board[[row]],Q][[1]]
- [[1]];AppendTo[solution,posQ];];,{row,n}]
- ;
- If[Length@solution==n,AppendTo[solutions,solution]];
- ];
- (*This part stops calculation after queen moved from last column to first
- column in the first row*)
- If[tt==0,If[board[[1,n]]==Q,tt++]];
- If[tt==1&&board[[1,1]]==Q,Break[]];
- (*Backtracking Loop=======================*)
- If[i==n,
- test=True;
- While[test,
- If[MemberQ[board[[i]],Q],
- pos=Position[board[[i]],Q][[1]][[1]];
- board[[i,pos]]=0;
- j=pos;
- (*Row*)Table[If[k!=j,board[[i,k]]=board[[i,k]]-1],{k,1,n}];
- (*Column*)Table[If[k!=i ,board[[k,j]]=board[[k,j]]-1],{k,1,n}];
- (*lDiagonalLower======================*)
Add Comment
Please, Sign In to add comment