挑战
- 到达关卡的尽头!
- 如果您准确地击中每个 (C)oin 块 2 次,则可获得奖励积分。
不允许
- 以任何方式对命令序列进行硬编码。
- 你最喜欢的“一个字符语言”恰好做了一件事,那就是解决这个高尔夫问题。
如何
您的程序通过标准输入接收以下级别(没有换行符)。
然后它必须打印出成功完成关卡所需的命令。
等级
- S是你的起始位置。
- E完成关卡所需的位置。
- C是一个硬币块,里面有 2 个硬币,你永远不必跳过其中一个才能完成关卡。
- C和_都算地,只有实地没有浮动平台。
- | 是一堵墙,为了完成关卡,你需要跳上的所有墙最多只有 1 堵墙高,所有更高的墙都可以认为是你无法以任何方式摆脱的深渊。
- x是尖峰,猜猜如果你触摸它们会发生什么。尖峰总是在它们周围的地面以下一层。
所有级别都是 4 行高,每行 63 个字符宽。这使得每个级别总共有 252 个字符。
> ______ ____ ________ ___ <
> C ______| | | | C __| | | | ____E<
>S______ __ ____| | | |_____| |__| |___| <
> xx xx xx <
注意: >< 只是为了说明边界,它们不包含在程序的输入中。还要注意你的文本编辑器,因为我的空格多次搞砸了
命令
- M = 将你向右移动 1,如果你下方没有地面,你会跌倒直到你撞到它。坠落时 不能移动。
- J = 跳跃,在接下来的 3 个命令中将您向上移动 1 或直到您击中 (C)oin 块。在那之后,你会跌倒直到你到达地面。你只能在地面上跳跃。如果 M 将您带到与地面相同的高度,则跳跃将被取消。
- O = NOP,会让你等待/什么都不做。这样你就可以跳过只有 1 个街区宽的洞和尖峰(你不需要这个对于上面的水平,但如果你能解决需要这个的水平,你会获得额外的积分)。
解决方案(带硬币块)
连续的命令堆叠在一起。
F表示您将跌倒的位置(请记住,跌倒时您不能做任何事情),
MMMF MMMF
M MMMMMMJ MMMMF M MMMMMMMMJ MMMF
M J MMMFMMMF MMMMMMJ| | | |F J MMJ| | | |F MMMMME
SMMMJMJ MJ MMMJ| | | |MMJMJ| |__| |MMJ|
xx xx xx
生成的命令序列,75 个字符长:
MMMMJJMMJMMMMJMMMMMMJMMMMMMJMMMMMMJMMMMMMMMMJJMMJMMJMMMMMMMMJMMMMMMMMJMMMMM
希望这会产生一些有趣的结果......而不是大量的火焰:O
编辑
好的,有比我最初想象的更多的可能性,我为所有的编辑道歉。