Chuyển đổi ký hiệu đại số sang ký hiệu mô tả


8

Mr Short thích chơi cờ. Ông Short cũng là một người đàn ông rất truyền thống. Do đó, ông Short bị làm phiền bởi xu hướng sử dụng ký hiệu Đại số gần đây trong cờ vua hiện đại, và ông thà sử dụng ký hiệu Mô tả , giống như cha và cha của cha mình trước ông.

Ghi chú

Để đơn giản hóa thử thách này, tôi đã chọn không xử lý các vấn đề khác nhau (như trong khi hai mảnh có thể di chuyển đến cùng một hình vuông hoặc có thể chụp cùng một mảnh.) Ngoài ra, không có giao dịch với en passant, khuyến mãi hoặc Castling.

Ký hiệu đại số cho người không quen

  • Các ô vuông được đánh số từ a1dưới cùng bên trái đến h8trên cùng bên phải. Các chữ cái đại diện cho các tệp (cột) trong khi các số đại diện cho các cấp bậc (hàng). Vua trắng được đặt vào đầu trò chơi tại quảng trường e1.
  • Một di chuyển bao gồm các mảnh đã di chuyển + hình vuông đích. Ví dụ, một vị vua chuyển sang e2sẽ Ke2.
  • Nếu mảnh đã di chuyển là Cầm đồ, thì mảnh thư bị bỏ qua. Ví dụ, di chuyển bắt đầu Pawn đến e4được viết là e4.
  • Nếu di chuyển là một bản chụp, thì xchữ cái được chèn giữa mảnh và hình vuông đích. Ví dụ, một Nữ hoàng chụp tại f7được chú thích là Qxf7.
  • Nếu mảnh chụp là Cầm đồ, vì nó di chuyển theo đường chéo, ký hiệu ghi lại tệp mà Cầm đồ bắt nguồn từ đó. Ví dụ: khi Cầm đồ lúc c4chụp một mảnh tại d5, di chuyển được chú thích là cxd5.
  • Các biểu tượng mảnh Kdành cho Vua, Qcho Nữ hoàng, Bcho Giám mục, Ncho Hiệp sĩ và Rcho Rook. Chân không có biểu tượng.
  • Các chú thích khác bao gồm +để kiểm tra và #cho người kiểm tra. Một con tốt chuyển đến f7 và kiểm tra là f7+. Lưu ý thiếu không gian.

Ký hiệu mô tả cho người không quen

  • Các tập tin được mô tả bởi các mảnh bắt đầu trên nó. Ví dụ, những gì sẽ là etệp trong Đại số, trở thành tệp King, hay nói ngắn gọn là K. Các tập tin khác được đánh dấu bên cạnh của họ, sau đó là mảnh. Vì vậy, tập tin hlà tập tin của King Rook, hay KR.
  • Các cấp bậc được đánh số theo quan điểm của người chơi đang di chuyển. Thứ hạng thứ tư trong Đại số là gì, là thứ hạng thứ tư cho màu trắng, nhưng thứ hạng thứ năm cho màu đen.
  • Nó sau đó hình vuông e4K4cho các cầu thủ và trắng K5cho các cầu thủ da đen. Hình vuông f7KB7cho các cầu thủ và trắng KB2cho các cầu thủ da đen.
  • Một di chuyển được chú thích bởi các mảnh di chuyển, sau đó là một dấu gạch ngang, sau đó là hình vuông mục tiêu. Vì vậy, một cầm đồ di chuyển đến K4P-K4. Một nữ hoàng chuyển đến KR5Q-KR5.
  • Một bản chụp được chú thích bởi phần chụp, sau đó x, phần bị bắt. Do đó, một Giám mục bắt một con Tốt là BxP. Thông thường, bạn cần phải đánh dấu cầm đồ đã được bắt, nhưng bỏ qua điều này vì lợi ích của sự đơn giản.
  • Các biểu tượng mảnh Kdành cho Vua, Qcho Nữ hoàng, Bcho Giám mục, Ktcho Hiệp sĩ (lưu ý các biểu tượng khác nhau), Rcho Rook và Pcho Cầm đồ.
  • Các chú thích khác bao gồm chkiểm tra và matecho người kiểm tra. Một con tốt di chuyển đến KB7và kiểm tra là P-KB7 ch. Lưu ý không gian.

Đầu vào

Một chuỗi các ký hiệu đại số di chuyển, được phân định bằng khoảng trắng. Không có số di chuyển. Ví dụ: người bạn đời của The Fool đi như thế này:

f3 e5 g4 Qh4#

Hoặc trò chơi Teed vs Delmar, từ cùng một trang Wikipedia:

d4 f5 Bg5 h6 Bf4 g5 Bg3 f4 e3 h5 Bd3 Rh6 Qxh5+ Rxh5 Bg6#

Các Immortal trò chơi .

e4 e5 f4 exf4 Bc4 Qh4+ Kf1 b5 Bxb5 Nf6 Nf3 Qh6 d3 Nh5 Nh4 Qg5 Nf5 c6 g4 Nf6 Rg1 cxb5 h4 Qg6 h5 Qg5 Qf3 Ng8 Bxf4 Qf6 Nc3 Bc5 Nd5 Qxb2 Bd6 Bxg1 e5 Qxa1+ Ke2 Na6 Nxg7+ Kd8 Qf6+ Nxf6 Be7#

Bạn có thể cho rằng đầu vào luôn là một trò chơi hợp lệ. Tất cả các động thái đều theo đúng thứ tự và không có dữ liệu bên ngoài. Không có động thái sẽ bao gồm định hướng .

Ví dụ, trò chơi The Evergreen mặc dù rõ ràng là một trò chơi hợp lệ, sẽ không được nhập vào do bước thứ 19 , Rad1.

Bạn cũng có thể cho rằng tất cả các danh sách di chuyển đầu vào bắt đầu từ vị trí bắt đầu.

Đầu ra

Một danh sách di chuyển, với định dạng tương tự, trong ký hiệu Mô tả.

Ví dụ: người bạn đời của The Fool:

P-KB3 P-K4 P-KKt4 Q-KR5 mate

Teed vs Delmar:

P-Q4 P-KB4 B-KKt5 P-KR3 B-KB4 P-KKt4 B-KKt3 P-KB5 P-K3 P-KR4 B-Q3 R-KR3 QxP ch RxQ B-KKt6 mate

Trò chơi bất tử:

P-K4 P-K4 P-KB4 PxP B-QB4 Q-KR5 ch K-KB1 P-QKt4 BxP Kt-KB3 Kt-KB3 Q-KR3 P-Q3 Kt-KR4 Kt-KR4 Q-KKt4 Kt-KB5 P-QB3 P-KKt4 Kt-KB4 R-KKt1 PxB P-KR4 Q-KKt3 P-KR5 Q-KKt4 Q-KB3 Kt-KKt1 BxP Q-KB3 Kt-QB3 B-QB4 Kt-Q5 QxP B-Q6 BxR P-K5 QxR ch K-K2 Kt-QR3 KtxP ch K-Q1 Q-KB6 ch KtxQ B-K7 mate

Đây không phải là ký hiệu mô tả đơn giản nhất có thể, vì đôi khi bạn không cần chỉ định tệp Knight nào đã được chuyển đến (như trong, Q-KKt4có thể được viết Q-Kt4vì di chuyển Q-QKt4là không thể.) Di chuyển BxPlà mơ hồ (nên cầm đồ: nên là BxQKtP) , nhưng ông Short không quan tâm đến điều đó quá nhiều.

Bạn có thể xem xét những trường hợp thử nghiệm của bạn.

Lưu ý: Tôi đã viết những thứ này bằng tay. Nếu bạn bắt gặp bất kỳ sai lầm rõ ràng, xin vui lòng cho tôi biết.

Quy tắc và chấm điểm

  • Áp dụng quy tắc chuẩn: chương trình có đầu ra cho thiết bị xuất chuẩn hoặc chức năng. Không có gì để stderr. Sơ hở tiêu chuẩn bị cấm.
  • Vui lòng liên kết đến một trang web nơi chúng tôi có thể kiểm tra mã của bạn.
  • Code golf: mã ngắn nhất thắng.

Tóm lại là

Đây là thử thách đầu tiên của tôi, vì vậy tôi có thể đã mắc một số lỗi không hay. Phản hồi về câu hỏi (trong các ý kiến, rõ ràng) được đánh giá cao.


3
Nếu bạn thực sự muốn có thời gian để giải quyết những thách thức của mình và nhận phản hồi cùng một lúc mà không có bất kỳ vấn đề nào khác, bạn có thể đăng nó dưới dạng một đề xuất trong hộp cát .
R. Kap

Thử thách đầu tiên tuyệt vời
edc65

Tôi nghĩ ký hiệu mô tả sẽ là e2-e4 và Ng1-f3 (đối với e4 và Nf3 tương ứng từ vị trí bắt đầu)
ericw31415

Câu trả lời:


2

Hàng loạt, 554 byte

@echo off
for %%r in (a.R b.Kt c.B d.Q e.K f.B g.Kt h.R)do set %%~nr1=%%~xr&set %%~nr8=%%~xr
for %%r in (a b c d e f g h)do set %%r2=.P&set %%r7=.P
set s=
:l
set m=%1
set c=
for %%r in (ch.+ mate.#) do if .%m:~-1%==%%~xr set c= %%~nr&set m=%m:~0,-1%
set p=%m:~0,1%
for %%r in (a b c d e f g h)do if %p%==%%r set p=P
for %%r in (QR.a QKt.b QB.c Q.d K.e KB.f KKt.g KR.h)do if .%m:~-2,1%==%%~xr set d=-%%~nr%m:~-1%
if %m:~-3,1%==x call set d=x%%%m:~-2%:~1%%
set %m:~-2%=.%p:N=Kt%
set s=%s% %p:N=Kt%%d%%c%
shift
if not "%1"=="" goto l
echo%s%

slà chuỗi đầu ra. mlà di chuyển hiện tại (di chuyển được thực hiện dưới dạng tham số dòng lệnh). clà cờ chhoặc mate. plà mảnh hiện tại. Nếu không có mảnh (tức là một chữ cái viết thường a-h) thì Pđược thay thế. (Các Nđể Ktthay thế được thực hiện sau đó để tiết kiệm byte.) Sau đó Cột đích ngẩng đầu lên trong từ điển. Tuy nhiên, nếu di chuyển thực sự là một sự bắt giữ thì đích đến sẽ trở thành một xmảnh tiếp theo trước đó trên hình vuông đó. Dù bằng cách nào thì hình vuông đích được đặt thành mảnh vừa di chuyển đến đó. Các di chuyển được tích lũy cho đến khi không còn tham số nữa và sau đó chúng được in.

Các biến a1... h8được sử dụng để lưu trữ phần nhìn thấy lần cuối. Các .tiền tố là có vì cách tôi khởi hàng trở lại; thật khó để lặp lại hai biến số cùng một lúc trong Batch trừ khi tôi được phép bắt đầu một biến với a ..

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.