Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import random
- import time
- class bcolors:
- WARNING = '\033[93m'
- ENDC = '\033[0m'
- def clrscr():
- if os.name == 'posix':
- os.system('clear')
- else:
- os.system('cls')
- def init_board():
- board = []
- for i in range(8):
- sub_board = []
- for j in range(8):
- sub_board.append('-')
- board.append(sub_board)
- #board[0][0] = 'R'
- #queen_spacer(board, 0, 0)
- return board
- def board_printer(board):
- print('-' * 27)
- start = 1
- for sub_board_one in board:
- for sub_board_two in sub_board_one:
- if start:
- if sub_board_two == 'R':
- print('|', bcolors.WARNING + sub_board_two +
- bcolors.ENDC, ' ', end='')
- else:
- print('|', sub_board_two, ' ', end='')
- start = 0
- else:
- if sub_board_two == 'R':
- print(bcolors.WARNING + sub_board_two +
- bcolors.ENDC, ' ', end='')
- else:
- print(sub_board_two, ' ', end='')
- print('|')
- start = 1
- print('-' * 27)
- def checker(board, l, c):
- # colonnes plus
- for i in range(0, 8):
- if not i == c:
- if board[l][i] == 'R':
- return False
- # lignes plus
- for i in range(0, 8):
- if not i == l:
- if board[i][c] == 'R':
- return False
- # top left
- l1, c1 = l-1, c-1
- while l1 >= 0 and c1 >= 0:
- if board[l1][c1] == 'R':
- return False
- l1 -= 1
- c1 -= 1
- # right down
- l1, c1 = l+1, c+1
- while l1 < 8 and c1 < 8:
- if board[l1][c1] == 'R':
- return False
- l1 += 1
- c1 += 1
- # top right
- l1, c1 = l-1, c+1
- while l1 >= 0 and c1 < 8:
- if board[l1][c1] == 'R':
- return False
- l1 -= 1
- c1 += 1
- # down left
- l1, c1 = l+1, c-1
- while l1 < 8 and c1 >= 0:
- if board[l1][c1] == 'R':
- return False
- l1 += 1
- c1 -= 1
- return True
- def queen_spacer(board, l, c):
- # colonnes plus
- for i in range(0, 8):
- if not i == c:
- board[l][i] = 'X'
- # lignes plus
- for i in range(0, 8):
- if not i == l:
- board[i][c] = 'X'
- # top left
- l1, c1 = l-1, c-1
- while l1 >= 0 and c1 >= 0:
- board[l1][c1] = 'X'
- l1 -= 1
- c1 -= 1
- # right down
- l1, c1 = l+1, c+1
- while l1 < 8 and c1 < 8:
- board[l1][c1] = 'X'
- l1 += 1
- c1 += 1
- # top right
- l1, c1 = l-1, c+1
- while l1 >= 0 and c1 < 8:
- board[l1][c1] = 'X'
- l1 -= 1
- c1 += 1
- # down left
- l1, c1 = l+1, c-1
- while l1 < 8 and c1 >= 0:
- board[l1][c1] = 'X'
- l1 += 1
- c1 -= 1
- def filled(board):
- for l in board:
- if not 'R' in l:
- return False
- return True
- def main():
- clrscr()
- while 1:
- board = init_board()
- for l in range(8):
- c = random.randint(0, 7)
- r = 0
- while checker(board, l, c) == False and r < 20:
- c = random.randint(0, 7)
- r += 1
- board[l][c] = "R"
- queen_spacer(board, l, c)
- if filled(board):
- board_printer(board)
- break
- if __name__ == '__main__':
- start_time = time.time()
- main()
- exec_time = time.time() - start_time
- print(f"temp d'execution = {round(exec_time,3)} Secondes.")
- print()
Add Comment
Please, Sign In to add comment