六角象棋描述了在棋盘上玩的一系列象棋变体,其中棋盘格是六边形而不是传统的正方形。有许多这样的变体。在这一挑战中,我们将重点介绍最常见的格林斯基(Gliński)的变体。
棋盘由三种颜色组成(因此相同的颜色不会共享边缘),六边形的边缘面向玩家。板具有11个文件,用字母标记的a
通过l
(字母j
不使用),和11列(其弯曲60°在文件f
)。等级1
通过6
每个包含11个单元格,等级7
具有9个单元格,等级8
具有7个,依此类推。排名仅11
包含一个单元格:f11。(如果有帮助,可以将每个等级视为一个非常宽的“ V”形。)
这是板子的示例图片,骑士位于中央单元上。标有点的单元格是该特定骑士的合法举动。骑士以与“普通”国际象棋类似的方式移动,两下一下。用六角象棋术语来说,这是正交移动(越过一条边),然后是沿相同方向的对角线移动(最接近相同颜色的移动)。例如,对于下面的骑士,然后“向上”移动到浅棕色,然后进行对角线移动“向上和向右”或“向上和向左”移动到最近的浅棕色。
通过https://commons.wikimedia.org/wiki/File:Glinski_Chess_Knight.svg在公共领域中
这位骑士位于f6,因此合法移动
c4, c5, d3, d7, e3, e8, g3, g8, h3, h7, i4, i5
输入值
一个输入,给出了我们骑士的起始格。它可以是任何方便的格式,既可以是单个字符串"b6"
,也可以是两个字符串"b", "6"
等。输入字母可以是大写或小写-您可以选择。
输出量
骑士可以在该位置进行的有效移动的列表。这可以是字符串数组,具有明确且一致的定界符的单个字符串,由换行符分隔的字符串等,以最方便的方式进行。输出不一定要按排序顺序,可以是大写或小写-您可以选择。
规则
- 假设板上没有其他物件或干扰移动。我们只关注骑士。
- 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。
- 如果可能,请提供一个在线测试环境的链接,以便其他人可以尝试您的代码!
- 禁止出现标准漏洞。
- 这是代码高尔夫球,因此所有常见的高尔夫规则都适用,并且最短的代码(以字节为单位)获胜。
例子
b6
a3, c4, d5, d9, e7, e8
f6
c4, c5, d3, d7, e3, e8, g3, g8, h3, h7, i4, i5
f11
d8, e8, g8, h8
i1
f2, f3, g4, h4, l2, k3