CAPL 1.5以上;6无输入;带输入的10-10 = 0
旁注
我在某处[链接?]读过,高尔夫问题中不允许使用自定义语言,因为它们可以使内置函数完全满足问题的要求,但是我使CAPL 总体上使高尔夫更容易。如果您认为这里不允许这样做,请告诉我!
我从> <>和Befunge(可以在行之间移动并使用十六进制字符来推数字)中得到一些想法,一些想法来自Ruby,有些来自我自己,以使打高尔夫球变得容易。
CAPL从左到右读取,并在该行的末尾向下一行。如果是最后一行,则程序将退出。
到目前为止,还没有人知道这种语言,所以我会尽力解释。
输出y。6个字节
bb*.n<
bb*
b
为十六进制11
,所以bb*
是11*11
= 121
,这是UTF-8等效的y
。该值被压入堆栈。
.
从堆栈中弹出最高值,并输出为UTF-8。正如121
堆栈顶部一样,这里忽略了索引。
n
输出换行符
<
将指针发送回该行的开头,从而重复该行。由于我们不期望输入,因此可以安全地执行此操作,而无需重新询问输入。
从输入输出。10个字节,加分后为0
i~a&{X:.)}
i
接收用户的输入,将其作为UTF-8压入堆栈的顶部,然后压入长度。即[72,101,108,108,111,5]
~
从堆栈中弹出一个数字,然后反转该字节数。即[111,108,108,101,72]
a
十六进制为10
,换行符
&{...}
形成无限循环。我们有输入,所以我们不能将指针发送回该行。我可以将函数放在下面的行中,这将使我安全一个字节,但此挑战中不允许换行。
X
从堆栈中删除最高值(循环中的索引)
:.
复制最高值,然后输出为UTF-8
)
。向右转堆栈。([1,2,3,4,5]
-> [5,1,2,3,4]
)
但是,这意味着我们从换行开始,然后开始输出输入,然后是换行,然后是输入,依此类推。如果不允许我们以换行开头,请使用以下代码(12字节),或者减去2奖金。
iXa#~&{X:.)}
这里唯一的新命令是#
,它将堆栈中的项目数量推入堆栈。
我从中删除了长度i
,因为加1,然后与换行符交换比删除并重新获得长度长。
只是为了好玩,这里有一个“ Hello World”程序
"Hello World"#~
#?!;.<
该?!
操作与> <>的相同
y
或\n
在字符串文字内部”吗?