果冻,37 34字节
“¢ ¬9£Hæz¥{çb¤S®!‘ṃ€“¡&¦»
¢iµ’,‘ị¢
在线尝试!
接受小写输入。
-2感谢Jonathan Allan。
-1,因为事实证明这是有效的功能:)
感谢Jonathan Allan(和Dennis),现在您可以删除了€
。不幸的是,这在这里是不竞争的。
详细的算法说明:
我们通常从底部(主)链接开始进行解释,但是到了这里,我觉得从顶部开始进行解释更合适。
首先,我们只加载列表[1, 32, 7, 57, 2, 67, 17, 92, 3, 94, 19, 119, 4, 109, 9, 34]
。看起来像是随机数吧?好吧,这实际上是一个以5为基数压缩的数字的列表,因此我们以5为基数对它进行解压缩。现在看起来像[[1], [1, 1, 2], [1, 2], [2, 1, 2], [2], [2, 3, 2], [3, 2], [3, 3, 2], [3], [3, 3, 4], [3, 4], [4, 3, 4], [4], [4, 1, 4], [1, 4], [1, 1, 4]]
。看上去还是随机的东西,但这实际上是NESW
16个坐标的- 映射列表,因此我们离完成列表不远(Jelly被1索引)。进行最终映射,我们得到[['N'], ['N', 'N', 'E'], ['N', 'E'], ['E', 'N', 'E'], ['E'], ['E', 'S', 'E'], ['S', 'E'], ['S', 'S', 'E'], ['S'], ['S', 'S', 'W'], ['S', 'W'], ['W', 'S', 'W'], ['W'], ['W', 'N', 'W'], ['N', 'W'], ['N', 'N', 'W']]
,这是我们想要的完整列表(果冻字符串的形式为)[char1, char2, char3, ...]
。
由于我们现在已经构建了坐标列表,因此可以使用它。主链接开始起作用。首先,加载已构建的列表,然后获取输入(作为命令行参数)坐标所在的索引。然后,将其前任和后继配对到一个列表中,并将它们用作模块化索引到相同的坐标列表中,以分别将坐标作为输入的左侧和右侧。您现在认为我们终于完成了,但实际上还有一件事,即分隔符。这是有效的函数,因为1)您可以使用<integer>Ŀ
2)调用它;还可以定义其他函数(例如导入模块)。现在,我们完成了。作为一个完整的程序,它没有分隔符,但是没关系,因为它可以作为函数使用。
逐个链接的代码说明:
¢iµ’,‘ị¢K Main link. Arguments: z = cmd0
¢ Run the helper link niladically (i.e. load the coordinate list).
i Find the index of z in the list.
µ Start a new monadic chain. Arguments: z = list_index.
’ Decrement z.
‘ Increment z.
, Pair x and y into [x, y].
¢ Run the helper link niladically.
ị Take the elements of y at the indices in x.
“¢ ¬9£Hæz¥{çb¤S®!‘ṃ€“¡&¦» Helper link. Arguments: [1, 32, 7, 57, 2, 67, 17, 92, 3, 94, 19, 119, 4, 109, 9, 34]
“¢ ¬9£Hæz¥{çb¤S®!‘ Generate the integer list (the argument).
“¡&¦» Literal "newsy".
ṃ€ Base-length(y)-decompress every integer in x, then index into y.