Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import chess
- from itertools import permutations, combinations
- def simplify_fen_string(fen):
- parts = fen.split(' ')
- simplified_fen = ' '.join(parts[:4]) # Zachováváme pouze informace o pozici
- return simplified_fen
- def generate_chess_positions(pieces):
- all_squares = [chess.SQUARES[i] for i in range(64)]
- unique_fens = set()
- for squares in combinations(all_squares, len(pieces)):
- for square_perm in permutations(squares):
- board = chess.Board(None)
- board.clear_board()
- for piece, square in zip(pieces, square_perm):
- board.set_piece_at(square, chess.Piece.from_symbol(piece))
- if board.is_valid():
- # Přidáme pozici s bílým na tahu
- board.turn = chess.WHITE
- unique_fens.add(simplify_fen_string(board.fen()))
- # Přidáme pozici s černým na tahu
- board.turn = chess.BLACK
- unique_fens.add(simplify_fen_string(board.fen()))
- return unique_fens
- # Testování generování pozic
- initial_pieces = ['K', 'k', 'Q'] # Můžete změnit figury podle potřeby
- unique_positions = generate_chess_positions(initial_pieces)
- # Ověření, zda je konkrétní pozice vygenerována
- test_position = "8/8/5KQk/8/8/8/8/8 b - - 0 1"
- simplified_test_position = simplify_fen_string(test_position)
- if simplified_test_position in unique_positions:
- print("Pozice nalezena!")
- else:
- print("Pozice nenalezena.")
- # Výpis prvních 10 pozic
- print("Ukázka prvních 10 pozic:")
- for i, pos in enumerate(unique_positions):
- if i < 10:
- print(pos)
- else:
- break
- print(f"Celkový počet unikátních pozic: {len(unique_positions)}")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement