가능한 체스 동작은 몇 개입니까?

Dec 13 2020

표준 초기 위치에서 시작하여이 위치와 가능한 모든 후속 위치에 합법적 인 체스 이동이 몇 개 있습니까?

시작 위치를 무시하면 비숍은 32 칸 (다른 32 칸을 덮음)으로 이동할 수 있고, 루크는 64 칸으로 이동할 수 있으며, 양쪽을 고려하면 폰은 64 칸, 기사 , 왕, 여왕은 또한 64 개의 모든 위치에 도달 할 수 있습니다.

따라서 요약하면 총 384 개의 이동 대상-사각형 + 조각 조합이되어야합니다. 이 올바른지?

그러나 시작 위치를 무시하지 않으면 이동 횟수는 얼마입니까?

그런 다음 16 개의 폰 더블 스텝 어드밴스와 4 개의 캐슬 링 이동 (각 플레이어에 대해 2, 퀸 및 킹 사이드)을 추가해야합니다. 그리고 en passant는 두 플레이어 모두에 대해 2를 곱한 왼쪽 7과 오른쪽 7이어야합니다. 그리고 다른 모든 조각의 가능한 모든 소스-타겟 사각형 조합!

답변

3 HagenvonEitzen Dec 13 2020 at 19:03

흰색 왕은 내부 36 개 필드에서 8 개 필드, 4 개 코너 필드에서 4 개 필드, 나머지 24 개 경계 필드에서 5 개 필드로 이동할 수 있습니다. 그것은 흰색 왕의 경우 420 개 이동입니다. 캐슬 링이 422에 도달하려면 2를 더합니다. 캡처를 구별하면 거의 두 배가됩니다 (캐슬 링이 캡처 할 수 없음). 이제 검은 왕이이 두 배 (1684)를 허용할까요? 아니면 둘 다 할 수있는 움직임을 식별 할 수 있습니까 (예 : 캐슬 링을 제외한 전부-844)?

루크는 항상 (자유 시선이 주어지면) 14 칸으로 이동할 수 있습니다. 896 개의 동작입니다. 캡처를 구별하면 1792로 두 배가됩니다. 색상을 구별하려면 다시 두 배 (3584)하십시오.

길이가 n 인 대각선 (NW에서 SE로) 에서 감독은 n ( n -1) 이동 (시작 필드와 별개의 끝 필드 선택)을 할 수 있습니다. n = 1,2,3,4,5,6,7,8,7,6,5,4,3,2,1 (즉, 비숍의 색을 무시 함)을 넘어서 합계 280 개 이동, 두 배 양쪽 대각선 방향을 계산하려면 560으로 설정합니다. 캡처를 구별하려면 두 배 (1120), 색상으로 구별하려면 두 배 (2240)하십시오.

여왕의 경우 단순히 루크와 비숍을 추가하여 1456, 2912 또는 5824 이동을 계산합니다.

기사는 일반적으로 8 개의 이동을 할 수 있지만 왕과 마찬가지로 근처 경계를 고려해야합니다. 방향으로 세는 것이 더 쉽습니다. 예를 들어 오른쪽으로 두 개, 위로 갈 수있는 필드가 42 개 (6x7) 있습니다. 우리는 8 개의 방향 모두에 대해 같은 숫자 42 (필드는 다르지만)를 가지므로 총 336 개의 기사 이동이 있습니다. 캡처를 구별하는 경우 두 배 (672). 색상으로 구별하면 다시 두 배 (1344).

흰색 폰은 초기 위치에서 두 필드 앞으로 이동할 수 있습니다 (8 번 이동). 2 열에서 6 열까지 한 칸 앞으로 이동할 수 있습니다 (40 회 이동). 7 열에서 앞으로 이동하여 퀸, 루크, 비숍 또는 나이트로 승격 할 수 있습니다 (32 개 이동). 폰의 경우 캡처 구분 해야 합니다. 8 개 열 중 7 개만 오른쪽으로 캡처 할 수 있고 8 개 열 중 7 개에서는 왼쪽을 캡처 할 수 있습니다. 이를 통해 2 행에서 6 행까지 70 번의 점령 이동과 승격시 56 번의 ​​점령이 가능합니다. 지금까지 206. Pawn의 동일한 움직임 (시작 및 끝 필드)에 의해 캡처 en passant를 일반 캡처와 구별하려면 14를 더하여 220에 도달합니다. 다시 말하지만 Pawn의 경우 적어도 플레이어별로 구별하는 것이 유용 할 것 같습니다. 440에 도착합니다.

요약하면, 가능한 이동을 계산하는 가장 관대 한 방법은 1684 + 3584 + 2240 + 5824 + 1344 + 440 = 15116 개의 개별 이동으로 이어질 수 있습니다 . 체크 또는 체크 메이트를 제공하는 동작을 구별하거나 캡처 한 조각에 따라 캡처를 구별하여 숫자를 더 높일 수 있습니다.

2 2080 Jan 12 2021 at 05:06

보드가 제공되고 소스 및 타겟 스퀘어 만 고려되고 프로모션 선택이 고려되면 ( UCI 형식 에서와 같이 ) 1968 개의 가능한 이동이있을 것으로 보입니다.

# Python
# pip install python-chess
import chess

moves = 0

# Queen, covers all lines and diagonals
for x in range(8):
    for y in range(8):
        board = chess.Board("8/8/8/8/8/8/8/8")
        board.set_piece_at(chess.square(x,y), chess.Piece(chess.QUEEN, chess.WHITE))
        moves += len(list(board.generate_legal_moves()))
        
# Knight jumps
for x in range(8):
    for y in range(8):
        board = chess.Board("8/8/8/8/8/8/8/8")
        board.set_piece_at(chess.square(x,y), chess.Piece(chess.KNIGHT, chess.WHITE))
        moves += len(list(board.generate_legal_moves()))
        
        
# Straight pawn promotions, 2 players, 8 ranks each, 4 choices (queen, rook, bishop, knight)
moves += 2*8*4

# Diagonal pawn promotions, when capturing a piece
# 2 players, 14 diagonals (12 in the center and 1 each in the first and last ranks), 4 choices
moves += 2*14*4
        
print(moves)

캐슬 링은 왕을 두 단계 이동하여 표시한다고 가정합니다.

여기에 모든 가능한 UCI 문자열이 있고 여기 를 생성하는 코드입니다.