fork download
  1. grid = []
  2. #0LrQsNGB0YzRj9C90LXQvdC60L4=
  3. for x in range(8):
  4. grid.append(["-","-","-","-","-","-","-","-"])
  5.  
  6. def getGrid(x,y):
  7. return grid[7-y][x]
  8. def setGrid(x,y,val):
  9. grid[7-y][x] = val
  10.  
  11. def getNumberOfQueens():
  12. v = 0
  13. for x in range(8):
  14. for y in range(8):
  15. if getGrid(x,y)=="Q":
  16. v+=1
  17. return v
  18.  
  19. def checkXForTile(x,y):
  20. for i in range(8):
  21. if i==x:
  22. continue
  23. else:
  24. if getGrid(i,y)=="Q" :
  25. return True
  26. return False
  27.  
  28. def checkYForTile(x,y):
  29. for i in range(8):
  30. if i==y:
  31. continue
  32. else:
  33. if getGrid(x,i)=="Q":
  34. return True
  35. return False
  36.  
  37. def checkDiagonalsForTile(x,y):
  38. x1=x-1
  39. y1=y-1
  40. while True:
  41. if x1>=0 and y1>=0 and x1<=7 and y1<=7:
  42. if getGrid(x1,y1)=="Q":
  43. return True
  44. x1-=1
  45. y1-=1
  46. else:
  47. break
  48. x1=x+1
  49. y1=y-1
  50. while True:
  51. if x1>=0 and y1>=0 and x1<=7 and y1<=7:
  52. if getGrid(x1,y1)=="Q":
  53. return True
  54. x1+=1
  55. y1-=1
  56. else:
  57. break
  58. x1=x-1
  59. y1=y+1
  60. while True:
  61. if x1>=0 and y1>=0 and x1<=7 and y1<=7:
  62. if getGrid(x1,y1)=="Q":
  63. return True
  64. x1-=1
  65. y1+=1
  66. else:
  67. break
  68. x1=x+1
  69. y1=y+1
  70. while True:
  71. if x1>=0 and y1>=0 and x1<=7 and y1<=7:
  72. if getGrid(x1,y1)=="Q":
  73. return True
  74. x1+=1
  75. y1+=1
  76. else:
  77. break
  78. return False
  79.  
  80. def main():
  81. qqq=0
  82.  
  83.  
  84. i=0
  85. x0 = 0
  86. y0 = 0
  87. while True:
  88. if(qqq>60):
  89. return
  90. print("checking", x0,y0)
  91. setGrid(x0,y0,"Q")
  92.  
  93. for i in range (7):
  94. for x1 in range(8):
  95. for y1 in range(8):
  96.  
  97. if getGrid(x1,y1)=="Q":
  98. continue
  99. else:
  100. if(checkXForTile(x1,y1) or checkYForTile(x1,y1) or checkDiagonalsForTile(x1,y1)):
  101. continue
  102. else:
  103. setGrid(x1,y1,"Q")
  104. if getNumberOfQueens()==8 :
  105. print("SOLUTION-------")
  106. for i in grid:
  107. print(i)
  108. if(x0==7):
  109. x0=0
  110. y0+=1
  111. else:
  112. x0+=1
  113.  
  114. qqq+=1
  115. else:
  116. if(x0==7):
  117. if(y0==7):
  118. print("no solution")
  119. qqq+=1
  120. break
  121. else:
  122. y0+=1
  123. x0=0
  124. else:
  125. x0+=1
  126. for xx in range(8):
  127. for yy in range(8):
  128. setGrid(xx,yy,"-")
  129. main()
  130.  
Success #stdin #stdout 0.18s 14092KB
stdin
Standard input is empty
stdout
checking 0 0
checking 1 0
checking 2 0
checking 3 0
checking 4 0
checking 5 0
SOLUTION-------
['-', '-', '-', 'Q', '-', '-', '-', '-']
['-', '-', '-', '-', '-', '-', 'Q', '-']
['-', '-', 'Q', '-', '-', '-', '-', '-']
['-', '-', '-', '-', '-', '-', '-', 'Q']
['-', 'Q', '-', '-', '-', '-', '-', '-']
['-', '-', '-', '-', 'Q', '-', '-', '-']
['Q', '-', '-', '-', '-', '-', '-', '-']
['-', '-', '-', '-', '-', 'Q', '-', '-']
checking 6 0
checking 7 0
checking 0 1
checking 1 1
checking 2 1
checking 3 1
checking 4 1
checking 5 1
checking 6 1
checking 7 1
checking 0 2
checking 1 2
checking 2 2
checking 3 2
checking 4 2
checking 5 2
checking 6 2
checking 7 2
checking 0 3
checking 1 3
checking 2 3
checking 3 3
checking 4 3
checking 5 3
checking 6 3
checking 7 3
checking 0 4
checking 1 4
checking 2 4
checking 3 4
checking 4 4
checking 5 4
checking 6 4
checking 7 4
checking 0 5
checking 1 5
checking 2 5
checking 3 5
checking 4 5
checking 5 5
checking 6 5
checking 7 5
checking 0 6
checking 1 6
checking 2 6
checking 3 6
checking 4 6
checking 5 6
checking 6 6
checking 7 6
checking 0 7
checking 1 7
checking 2 7
checking 3 7
checking 4 7
checking 5 7
checking 6 7
checking 7 7
no solution