도전
문자열 입력을 함수 매개 변수 또는 stdin에서 가져 와서 유효한 FEN 문자열 인지 판별하는 프로그램 또는 함수를 작성하십시오 .
입력
입력은 다음 문자 만 포함한다고 가정 할 수 있습니다 (대소 문자 구분)
pkqrbnPKQRBN12345678/
입력 길이는 항상 최소 1 자에서 최대 100 자입니다.
산출
결과는 진실 / 거짓 값이어야합니다. 일관된 한 원하는 값이 될 수 있습니다 (모든 진실 된 결과는 동일한 결과를 가지며 모든 거짓된 결과는 동일한 결과를 갖습니다). 정확히 두 가지 가능한 출력이 있어야합니다.
유효한 것으로 간주되는 것
소문자는 검은 색 조각을 나타내고 대문자는 흰색 조각을 나타냅니다.
체스 게임에서 현재 위치의 조각이 존재할 수 있는지 확인해야합니다.
각 플레이어는 항상 정확히 1 킹 (k / K)을
갖습니다. 각 플레이어는 폰 (p / P)을
넘지 않아야합니다. 각 플레이어는 보통 1 * 퀸 (q / Q)을 넘지
않습니다. 2 * 루크 (r / R) 이상
각 플레이어는 보통 2 * 기사 (n / N)를
넘지 않습니다. 각 플레이어는 일반적으로 2 * 주교 (b / B)를 넘지 않습니다
* 플레이어는 ' 이 네 조각 중 하나에 폰을 홍보하십시오.
각 플레이어의 폰, 퀸, 루크, 나이트 및 주교의 총 수는 15를 넘지 않습니다.
총 조각 수와 빈 사각형 (숫자로 표시)은 항상 각 등급에 대해 정확히 8을 더해야합니다. 그리고 슬래시로 구분하여 항상 정확히 8 개의 순위가 있어야합니다.
무시할 수있는 것
표시된 포지션으로 플레이 할 수 있는지 또는 포지션이 합법적이라면 주어진 수량으로 조각 만 존재할 수 있는지에 대해 걱정할 필요가 없습니다.
플레이어 턴, 캐스터 링 권한 및 동반자와 같은 FEN 문자열의 추가 복잡성을 무시할 수 있습니다.
이것은 코드 골프입니다. 바이트 단위의 최단 프로그램이 이깁니다. 일반적인 허점과 규칙이 적용됩니다.
테스트 사례
입력 rnbqkbnr / pppppppp / 8 / 8 / 8 / 8 / PPPPPPPP / RNBQKBNR
출력 True
입력 2br2k1 / 1p2n1q1 / p2p2p1 / P1bP1pNp / 1BP2PnP / 1Q1B2P1 / 8 / 3NR2K
출력 True
입력 r2r2k1 / p3q2p / ppR3pr / rP4bp / 3p4 / 5B1P / P4PP1 / 3Q1RK1
출력 False
(검정색은 7 폰 및 4 루크-불가능)
입력 6k1 / pp3ppp / 4p3 / 2P3b1 / bPP3P1 / 3K4 / P3Q1q1
출력 거짓 (7 순위 만)
입력 3r1rk1 / 1pp1bpp1 / 6p1 / pP1npqPn / 8 / 4N2P / P2PP3 / 1B2BP2 / R2QK2R
출력 거짓 (9 랭크)
입력 5n1k / 1p3r1qp / p3p3 / 2p1N2Q / 2P1R3 / 2P5 / P2r1PP1 / 4R1K1
출력 False (2 순위는 9 제곱 / 조각)
입력 rnbqkbnr / pppppppp / 35분의 8 / 8 / 8 / PPPPPPPP / RNBQKBNR의
출력이 참
이 경우를위한 명확하고 Feersum Arnauld 감사 (3 + 5 = 8)
펜이란?
FEN 은 체스 판에 조각의 위치를 기록하기위한 표준 표기법입니다.
이미지 크레디트 http://www.chessgames.com
* It is legal for a player to 'promote' a pawn to any of these four pieces.
폰의 수를 줄여 보상하는 한, 플레이어는 최대 9 명의 여왕을 가질 수 있습니다. 조각의 위치가 합법적이거나 불법적 인 것에 대해 걱정할 필요는 없으며 조각 수만 있습니다.
35
8 개의 빈 사각형을 설명하는 특별한 방법입니다.