Các thách thức
Viết chương trình hoặc hàm lấy đầu vào chuỗi làm tham số hàm hoặc từ stdin và xác định xem đó có phải là chuỗi FEN hợp lệ không .
Đầu vào
Bạn có thể giả sử đầu vào sẽ chỉ bao gồm các ký tự sau (phân biệt chữ hoa chữ thường)
pkqrbnPKQRBN12345678/
Độ dài của đầu vào sẽ luôn tối thiểu là 1 ký tự và tối đa 100 ký tự
Đầu ra
Đầu ra phải là một giá trị trung thực / falsey. Đây có thể là bất kỳ giá trị nào bạn muốn miễn là chúng phù hợp (tất cả các kết quả trung thực có cùng một đầu ra, tất cả các kết quả falsey đều có cùng một đầu ra). Bạn nên có chính xác hai đầu ra khác biệt có thể.
Những gì được coi là hợp lệ
Chữ thường đại diện cho các mảnh màu đen, chữ in hoa đại diện cho các mảnh màu trắng.
Bạn nên đảm bảo có thể trong một ván cờ để các quân cờ ở vị trí hiện tại tồn tại.
Mỗi người chơi sẽ luôn có chính xác 1 vua (k / K)
Mỗi người chơi có thể có không quá 8 pawns (p / P)
Mỗi người chơi thường sẽ có không quá 1 * nữ hoàng (q / Q)
Mỗi người chơi thường sẽ không có nhiều hơn hơn 2 * rooks (r / R)
Mỗi người chơi thường sẽ có không quá 2 * hiệp sĩ (n / N)
Mỗi người chơi thường sẽ có không quá 2 * giám mục (b / B)
* Người chơi phải hợp pháp ' quảng bá 'một con tốt cho bất kỳ trong bốn phần này.
Tổng số pawns, nữ hoàng, tân binh, hiệp sĩ và giám mục cho mỗi người chơi sẽ không bao giờ nhiều hơn 15
Tổng số mảnh cộng với hình vuông trống (được biểu thị bằng số) phải luôn luôn thêm tối đa 8 cho mỗi cấp bậc. Và phải luôn luôn có chính xác 8 cấp bậc, cách nhau bởi một dấu gạch chéo về phía trước.
Những điều bạn có thể bỏ qua
Bạn không cần quan tâm đến việc liệu có thể chơi ở vị trí được biểu thị hay không, hoặc nếu vị trí đó là hợp pháp, chỉ có các phần có thể tồn tại với số lượng được đưa ra.
Bạn có thể bỏ qua sự phức tạp hơn nữa của các chuỗi FEN như lượt người chơi, quyền castling và en passant.
Đây là mã golf. Chương trình ngắn nhất trong byte thắng. Lỗ hổng thông thường và quy tắc áp dụng.
Các trường hợp thử nghiệm
Đầu vào rnbqkbnr / pppppppp / 8/8/8/8 / PPPPPPPP / RNBQKBNR
Đầu ra Đúng
Đầu vào 2br2k1 / 1p2n1q1 / p2p2p1 / P1bP1pNp / 1BP2PnP / 1Q1B2P1 / 8 / 3NR2K
Đầu ra Đúng
Đầu vào r2r2k1 / p3q2p / ppR3pr / rP4bp / 3p4 / 5B1P / P4PP1 / 3Q1RK1
Đầu ra Sai
(màu đen có 7 pawns và 4 rooks - không thể)
Nhập 6k1 / pp3ppp / 4p3 / 2P3b1 / bPP3P1 / 3K4 / P3Q1q1
Đầu ra Sai (chỉ có 7 cấp)
Đầu vào 3r1rk1 / 1pp1bpp1 / 6p1 / pP1npqPn / 8 / 4N2P / P2PP3 / 1B2BP2 / R2QK2R
Đầu ra Sai (9 bậc)
Nhập 5n1k / 1p3r1qp / p3p3 / 2p1N2Q / 2P1R3 / 2P5 / P2r1PP1 / 4R1K1
Đầu ra Sai (xếp hạng 2 có 9 ô vuông / miếng)
Đầu vào rnbqkbnr / pppppppp / 8/35/8/8 / PPPPPPPP / RNBQKBNR
Đầu ra Đúng
Cảm ơn Feersum và Arnauld để làm rõ trường hợp này (3 + 5 = 8)
FEN là gì?
FEN là một ký hiệu chuẩn để ghi vị trí của các quân cờ trên bàn cờ.
Tín dụng hình ảnh http://www.chessgames.com
* It is legal for a player to 'promote' a pawn to any of these four pieces.
Người chơi có thể có tới 9 nữ hoàng miễn là số lượng con tốt bị giảm để bù lại. Bạn không cần phải lo lắng về vị trí của các mảnh là hợp pháp hoặc bất hợp pháp, chỉ có số lượng các mảnh.
35
chỉ là một cách khác thường để mô tả 8 ô vuông trống.