(尽管有超过60个问题标记为下棋,但我们没有简单的n皇后挑战。)
在国际象棋中,N-皇后之谜的描述如下:给定n x n棋盘和n皇后,将皇后排列在棋盘上,以使没有两个皇后相互威胁。以下是n = 8从Wikipedia借来的的示例解决方案。
或者,在ASCII渲染中:
xxxQxxxx
xxxxxxQx
xxQxxxxx
xxxxxxxQ
xQxxxxxx
xxxxQxxx
Qxxxxxxx
xxxxxQxx
这里的挑战将是输入n和输出n-Queens难题解决方案的ASCII表示形式。由于存在多个可能的解决方案(例如,至少是旋转或反射),因此您的代码仅需要输出任何有效的解决方案。
输入项
n具有n >= 4 任何方便格式的单个正整数。(n = 2和n = 3没有解,并且n = 1很小,因此将其排除在外)
输出量
如上所述,解决了N-queens难题的结果的ASCII表示形式。您可以选择任何两个不同的ASCII值来表示空格和皇后。同样,可以以任何合适的格式(单个字符串,字符串列表,字符数组等)输出。
规则
- 前导或尾随的换行符或空格以及字符之间的空格都是可选的,只要字符本身正确对齐即可。
- 您既可以使用算法来计算可能的位置,也可以使用显式的“阶梯式”解决方案样式,以哪种方式更适合您的代码。
- 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。
- 如果可能,请提供一个在线测试环境的链接,以便其他人可以尝试您的代码!
- 禁止出现标准漏洞。
- 这是代码高尔夫球,因此所有常见的高尔夫规则都适用,并且最短的代码(以字节为单位)获胜。
例子
n=4
xQxx
xxxQ
Qxxx
xxQx
n=7
xxQxxxx
xxxxxxQ
xQxxxxx
xxxQxxx
xxxxxQx
Qxxxxxx
xxxxQxx
n=10
xxxxQxxxxx
xxxxxxxxxQ
xxxQxxxxxx
xxxxxxxxQx
xxQxxxxxxx
xxxxxxxQxx
xQxxxxxxxx
xxxxxxQxxx
Qxxxxxxxxx
xxxxxQxxxx



从标准输入中读取皇后数q,并计算两个变量以备后用:
启动主循环,将r的行号从q迭代到0,并在循环开始时递减,从而开始循环,因此第一个r是q减去1。
使用以下公式计算每行中女王的偏移量:
输出偏移量空格字符以缩进当前行的皇后位置,再加上一个额外的空格,只是因为它使输出循环更容易。
输出
测试r是否为零,在这种情况下,我们已经到达板的末端并可以退出,否则我们再次重复主循环。