Chess960 (或费舍尔随机国际象棋)是由前世界象棋冠军博比·菲舍尔于1996年6月19日在阿根廷布宜诺斯艾利斯公开宣布的国际象棋的一个变体。它使用与标准棋盘相同的棋盘和棋子;然而,棋子在玩家主场的起始位置是随机的。
来自:http://en.wikipedia.org/wiki/Chess960
对于所有想发帖的人来说.
您必须制作一个Chess960位置生成器,它能够按照上述规则随机生成960个位置中的一个(它必须能够输出960中的任何一个,硬编码的一个位置不被接受!),并且您只需要输出白色秩一段。
示例输出:
rkrbnnbq
其中:
这将是密码高尔夫,和平局将是向上。
发布于 2013-06-20 09:29:44
{.(#~'(?=.*b(..)*b).*r.*k.*r.*'&rxeq"1)'kqbbnnrr'A.~?~!8由于算法效率低下,在我的机器上花了几秒钟。在~.之前添加'kqbbnnrr' (删除重复项)可以获得一定的速度。
说明:
?~!8从0 ... 8!处理8!随机元素'kqbbnnrr'A.~将它们用作字符串kqbbnnrr的anagram索引。(#~'...'&rxeq"1)'在引号中通过正则表达式对它们进行过滤。{.的意思是“取第一个元素”发布于 2013-06-20 15:54:19
(-8?)/[{~*(*/~~':{m=_m:x%2}@&x="b")&(&x="k")within&"r"=x};"rrbbnnkq"]发布于 2013-06-22 20:09:01
基本上是chron的技术,除去了优雅的Ruby元素。
import re,random
a='rrbbnnkq'
while re.search('b.(..)*b|r[^k]*r',a):a=''.join(random.sample(a,8))
print a感谢彼得泰勒缩短了正则表达式。
https://codegolf.stackexchange.com/questions/11901
复制相似问题