viligen

checkmate

Feb 4th, 2022
747
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.36 KB | None | 0 0
  1. size = 8
  2. matrix = []
  3. queens_output = []
  4. king_row, king_col = None, None
  5. for row in range(size):
  6.     matrix.append(input().split())
  7.     for col in range(size):
  8.         if matrix[row][col] == 'K':
  9.             king_row, king_col = row, col
  10.             break
  11. step = 0
  12. while True:  # checking same row - right
  13.     if matrix[king_row][king_col+step] == 'Q':
  14.         queens_output.append([king_row, king_col+step])
  15.         break
  16.     step += 1
  17.     if king_col + step >= size:
  18.         break
  19. step = 0
  20. while True:  # checking same row - left
  21.     if matrix[king_row][king_col+step] == 'Q':
  22.         queens_output.append([king_row, king_col+step])
  23.         break
  24.     step -= 1
  25.     if king_col + step < 0:
  26.         break
  27. step = 0
  28. while True:  # checking same col, down
  29.     if matrix[king_row + step][king_col] == 'Q':
  30.         queens_output.append([king_row + step, king_col])
  31.         break
  32.     step += 1
  33.     if king_row + step >= size:
  34.         break
  35. step = 0
  36. while True:  # checking same col, up
  37.     if matrix[king_row + step][king_col] == 'Q':
  38.         queens_output.append([king_row + step, king_col])
  39.         break
  40.     step -= 1
  41.     if king_row + step < 0:
  42.         break
  43. step = 0
  44. while True:  # checking diagonal up-left
  45.     if matrix[king_row + step][king_col + step] == 'Q':
  46.         queens_output.append([king_row + step, king_col + step])
  47.         break
  48.     step -= 1
  49.     if king_col + step < 0 or king_row + step < 0:
  50.         break
  51.  
  52. step = 0
  53. while True:  # checking diagonal up-right
  54.     if matrix[king_row + step][king_col - step] == 'Q':
  55.         queens_output.append([king_row + step, king_col - step])
  56.         break
  57.     step -= 1
  58.     if king_col - step >= size or king_row + step < 0:
  59.         break
  60.  
  61. step = 0
  62. while True:  # checking diagonal down-right
  63.     if matrix[king_row + step][king_col + step] == 'Q':
  64.         queens_output.append([king_row + step, king_col + step])
  65.         break
  66.     step += 1
  67.     if king_col + step >= size or king_row + step >= size:
  68.         break
  69.  
  70. step = 0
  71. while True:  # checking diagonal down-left
  72.     if matrix[king_row + step][king_col - step] == 'Q':
  73.         queens_output.append([king_row + step, king_col - step])
  74.         break
  75.     step += 1
  76.     if king_col - step < 0 or king_row + step >= size:
  77.         break
  78. if queens_output:
  79.     print(*queens_output, sep='\n')
  80. else:
  81.     print("The king is safe!")
  82.    
  83.    
Advertisement
Add Comment
Please, Sign In to add comment