编写最短的代码,根据给定的FEN字符串计算当前玩家的所有可能(合法)移动。什么是FEN字符串?(维基百科)
- 最短的代码胜出,语言无关紧要。
- 输出动作必须遵守国际象棋的移动规则, 除了传球,cast和典当提升外。
- 忽略检查,将死和僵持,国王也无法被捕获。
您可以设置输出不同,只要你想(例如:A2-A4
,A2A4
,a2a4
,a2->a4
...)
测试用例:
#输入1: rnbqkbnr / pppppppp / 8/8/8/8 / PPPPPPPP / RNBQKBNR w KQkq-0 1
#输出1 A2-A4,A2-A3,B2-B4,B2-B3,C2-C4,C2-C3,D2-D4,D2-D3,E2-E4,E2-E3, F2-F4,F2-F3,G2-G4,G2-G3,H2-H4,H2-H3,B1-A3,B1-C3,G1-F3,G1-H3
#输入2 7k / 8/8/8/8/8 / PP6 / Q1q4K w--0 1
#输出2 A1-B1,A1-C1,A2-A3,A2-A4,B2-B3,B2-B4,H1-H2,H1-G1,H1-G2
这也是测试用例输入板的外观:i.stack.imgur.com/qlbH4.png
—
golffzz 2013年
@ugoren,我认为,但是列举所有可能的动作可能会消除一些捷径。但是,我不确定为什么不需要enpassant:FEN的部分要点是它包含足够的信息以使enpassant成为可能。
—
彼得·泰勒
@PeterTaylor我写那只是为了减少工作量。我想知道为什么没有人对此高尔夫感兴趣:)
—
golffzz 2013年
@golffzz不应将您的测试用例输入2为7k / 8/8/8/8/8 / PP6 / Q1q4K w--0 1而不是6pk / 6pp / 8/8/8 / p7 / PP4pp / Q2p2pK w- -0 1(除其他外,哪一个在末位似乎还有兵)?
—
Penguino 2014年