众所周知,一个人在酒精的影响下,在网格上的人有朝任何可用方向前进的机会均等。但是,这种常识性声明并不适用于非常小的酒鬼,他们的行为非常像他们一次采取所有可用路径,并且他们采取的可能路径可能会相互干扰。您的任务是在n
步骤之后显示此类量子醉汉的可能位置。
规格
讨论中的酒鬼占据了一个正方形网格,可以被认为是使用冯·诺依曼(加号)邻域的三态细胞自动机,遵循以下简单规则:
Empty
去Awake
,如果它是毗邻只有一个Awake
,否则进入Empty
Awake
去Sleeping
Sleeping
去Sleeping
电路板的初始状态是一个Awake
由Empty
s 的无限字段包围的单个状态。
挑战
给定一个非负整数n
,请在n
步骤之后创建酒鬼的ASCII表示形式。每个状态应由不同的字符表示,解决方案应说明哪个字符表示哪个状态。如果您将空格用于Empty
,则无需在行尾添加一行空格。
这是代码高尔夫球,因此最短的答案会获胜。适用标准漏洞,允许使用前导和尾随空格,允许使用字符串数组/ 2d char数组输出,等等。
例子
这些示例使用for
Empty
,@
for Awake
和#
for Sleeping
。
n=0
@
n = 1
@
@#@
@
n = 2
@
#
@###@
#
@
n = 3
@
@#@
@ # @
@#####@
@ # @
@#@
@
n=6
@
#
@###@
@#@
@ ### @
#@# # #@#
@###########@
#@# # #@#
@ ### @
@#@
@###@
#
@
n=10
@
#
@###@
@#@
###
# # #
#######
# ### #
@ ## ### ## @
#@# ### # ### #@#
@###################@
#@# ### # ### #@#
@ ## ### ## @
# ### #
#######
# # #
###
@#@
@###@
#
@
有趣的笔记
通过查找OEIS中占据的细胞数的序列,我发现量子醉汉与研究得更好的牙签序列同构。如果您可以将这些知识融入更好的高尔夫运动中,那么我将给您留下深刻的印象。
n=10
正确吗?我尝试了几种方法,但都得到了相同(错误)的答案,所以我只想确定一下。看起来有点不对劲,但我不知道。