Guest User

Untitled

a guest
Dec 17th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. [https://www.wolframcloud.com/objects/paralesely/Published/a.nb][1]
  2.  
  3. Timing[n=8;
  4. board=Table[0,{i,n},{j,n}];
  5. solutions={};
  6. tt=0;tt1={};
  7. For[i=1,i<=n,i++,
  8. For[j=1,j<=n,j++,
  9. If[board[[i,j]]==0,
  10. board[[i,j]]=Q;
  11. (*Row*)Table[If[k!=j,board[[i,k]]=board[[i,k]]+1],{k,1,n}];
  12. (*Column*)Table[If[k!=i ,board[[k,j]]=board[[k,j]]+1],{k,1,n}];
  13. (*lDiagonalLower======================*)
  14. k=i+1;
  15. l=j+1;
  16. While[k!=n+1&&l!=n+1,board[[k,l]]=board[[k,l]]+1;k++;l++];
  17. ( *rDiagonalLower======================*)
  18. k=i+1;
  19. l=j-1;
  20. While[k<= n&&l>= 1,board[[k,l]]=board[[k,l]]+1;k++;l--];
  21. (*====================================*)
  22. ];
  23. ];
  24. If[i==n,
  25. solution={};
  26. Table[If[MemberQ[board[[row]],Q],posQ=Position[board[[row]],Q][[1]]
  27. [[1]];AppendTo[solution,posQ];];,{row,n}]
  28. ;
  29. If[Length@solution==n,AppendTo[solutions,solution]];
  30. ];
  31. (*This part stops calculation after queen moved from last column to first
  32. column in the first row*)
  33. If[tt==0,If[board[[1,n]]==Q,tt++]];
  34. If[tt==1&&board[[1,1]]==Q,Break[]];
  35. (*Backtracking Loop=======================*)
  36. If[i==n,
  37. test=True;
  38. While[test,
  39. If[MemberQ[board[[i]],Q],
  40. pos=Position[board[[i]],Q][[1]][[1]];
  41. board[[i,pos]]=0;
  42. j=pos;
  43. (*Row*)Table[If[k!=j,board[[i,k]]=board[[i,k]]-1],{k,1,n}];
  44. (*Column*)Table[If[k!=i ,board[[k,j]]=board[[k,j]]-1],{k,1,n}];
  45. (*lDiagonalLower======================*)
Add Comment
Please, Sign In to add comment