8 Damen Problem?
Was muss ich an meinem Code fixxen: def initialize_board(): return [['O' for _ in range(8)] for _ in range(8)] def print_board(board): for row in board: print(" ".join(row)) print("\n") def find_safe_row(board, col): for row in range(8): if is_safe(board, row, col): return row return None def is_safe(board, row, col): # Überprüfen der Reihe und Spalte for i in range(8): if i == row: continue if board[i][col] == "X": print("gleiche Spalte gefunden") return False # Überprüfen der Diagonalen for i, j in zip(range(row, -1, -1), range(col, -1, -1)): if i == row: continue if board[i][j] == 'X': print("Diagonale links oben gefunden") return False for i, j in zip(range(row, 8, 1), range(col, -1, -1)): if i == row: continue if board[i][j] == 'X': print("Diagonale links unten gefunden") return False for i, j in zip(range(row, -1, -1), range(col, 8, 1)): if i == row: continue if board[i][j] == 'X': print("Diagonale rechts oben gefunden") return False for i, j in zip(range(row, 8, 1), range(col, 8, 1)): if i == row: continue if board[i][j] == 'X': print("Diagonale rechts unten gefunden") return False return True def print_board(board): for row in board: print(' '.join(row)) print() def queen_exists(board, row): for col in range(8): if board[row][col] == 'X': print(f"Queen exists at row {row}, column {col}") return col return None def place_new_queen(board, row): print(f"Placing new queen at row {row}, column 0") board[row][0] = 'X' def move_queen(board, row): col = queen_exists(board, row) print(f"Moving queen at row {row}, column {col}") board[row][col] = 'O' col += 1 try: print(f"Moving queen at row {row}, column {col}") board[row][col] = 'X' return col except: return None def remove_queen(board, row, col): print(f"Moving queen to row {row}, column {col}") board[row][col] = 'O' board = initialize_board() current_row = 0 while current_row >= 0: if queen_exists(board, current_row): place_new_queen(board, current_row) current_col = 0 else: current_col = move_queen(board, current_row) if not current_col: current_row -= 1 continue ok = True while is_safe(board, current_row, current_col): current_col = move_queen(board, current_row) if not current_col: current_row -= 1 ok = False break if ok: current_row += 1 print() print("current_row is", current_row) print_board(board) """ safe_row = find_safe_row(board, current_col) if safe_row is not None: place_new_queen(board, safe_row, current_col) current_col += 1 else: # No safe row found if current_col == 0: break else: current_col -= 1 last_queen_row = [row for row in range(8) if board[row][current_col] == 'X'][0] remove_queen(board, last_queen_row, current_col) """ def solve_eight_queens(): board = initialize_board() print_board(board) board[0][0] = "X" board[1][1] = "X" board[2][0] = "X" print_board(board) if is_safe(board,0 ,0): print("erste Dame ok") else: print("erste Dame nicht ok") if is_safe(board,1 ,1): print("zweite Dame ok") else: print("zweite Dame nicht ok") if is_safe(board,2 ,0): print("dritte Dame ok") else: print("dritte Dame nicht ok") """ if place_queens(board): print("Lösung gefunden:") print_board(board) else: print("Keine Lösung gefunden.") """