fork download
  1. #Puzzling.SE: http://p...content-available-to-author-only...e.com/a/40442/1766
  2. Q = 1
  3. N = 2
  4. VALS = ' QN'
  5.  
  6. def initBoard():
  7. return [[0 for c in range(8)] for r in range(8)]
  8.  
  9. def place(board, piece, r, c):
  10. board[r][c] = piece
  11.  
  12. def dominated(board, r, c, justTruth=True):
  13. if board[r][c]:
  14. return True
  15. for d in range(1,8):
  16. if board[r-d][c] == Q or board[r][c-d] == Q or board[r-d][c-d] == Q or board[(r+d)%8][c-d] == Q:
  17. return justTruth or 'q'
  18. for rd, cds in ((-2,(-1, 1)), (-1,(-2, 2)), (1,(-2, 2)), (2,(-1, 1))):
  19. for cd in cds:
  20. if board[(r+rd)%8][(c+cd)%8] == N:
  21. return justTruth or 'n'
  22. if justTruth:
  23. return False
  24. return '.'
  25.  
  26. def printBoard(board):
  27. s = ''
  28. for r in range(8):
  29. for c in range(8):
  30. if board[r][c]:
  31. s += VALS[board[r][c]] + ' '
  32. else:
  33. s += dominated(board, r, c, False) + ' '
  34. s += '\n'
  35. print(s)
  36.  
  37. def main():
  38. print("8x8 Chessboard in form of a Toroid!\n Let's begin, shall we...")
  39. b = initBoard()
  40. place(b, Q, 0, 0)
  41. printBoard(b)
  42.  
  43. place(b, Q, 1, 4)
  44. printBoard(b)
  45.  
  46. place(b, Q, 4, 3)
  47. printBoard(b)
  48.  
  49. place(b, Q, 5, 7)
  50. printBoard(b)
  51.  
  52. print("It is done...")
  53. '''
  54. from itertools import combinations
  55. rcs = [(r, c) for r in range(8) for c in range(8)]
  56. m = 0
  57. for locs in combinations(rcs, 3):
  58. b = initBoard()
  59. for r, c in locs:
  60. place(b, Q, r, c)
  61. d = sum(dominated(b, r, c) for r in range(8) for c in range(8))
  62. if d > m:
  63. m = d
  64. printBoard(b)
  65. print(d)
  66. print()
  67. '''
  68. if __name__=='__main__':
  69. main()
Success #stdin #stdout 0.02s 9984KB
stdin
Standard input is empty
stdout
8x8 Chessboard in form of a Toroid!
 Let's begin, shall we...
Q q q q q q q q 
q q . . . . . q 
q . q . . . q . 
q . . q . q . . 
q . . . q . . . 
q . . q . q . . 
q . q . . . q . 
q q . . . . . q 

Q q q q q q q q 
q q q q Q q q q 
q . q q q q q . 
q . q q q q q . 
q q . . q . . q 
q . . q q q . . 
q q q . q . q q 
q q q . q . q q 

Q q q q q q q q 
q q q q Q q q q 
q q q q q q q . 
q . q q q q q . 
q q q Q q q q q 
q . q q q q . . 
q q q q q q q q 
q q q q q . q q 

Q q q q q q q q 
q q q q Q q q q 
q q q q q q q q 
q q q q q q q q 
q q q Q q q q q 
q q q q q q q Q 
q q q q q q q q 
q q q q q q q q 

It is done...