您对二维编程语言打高尔夫球有什么一般提示?我正在寻找可应用于代码高尔夫球问题的提示,这些提示特定于2D编程语言,但不特定于任何一种语言(“删除注释”和“使用M
操作”之类的响应不是答案)。
请为每个答案发布一个提示。
您对二维编程语言打高尔夫球有什么一般提示?我正在寻找可应用于代码高尔夫球问题的提示,这些提示特定于2D编程语言,但不特定于任何一种语言(“删除注释”和“使用M
操作”之类的响应不是答案)。
请为每个答案发布一个提示。
Answers:
通常,更简单的程序可以写在一行上。例如,经典的cat程序可以是:
>iv
^o<
但是,一个人可能会滥用包装行为,并且这样做:
io
或者,在没有这种包装行为的语言中:
> ?oi<
(假设?
不会弹出。)对于非包装语言,显式循环通常会更好。
在带有跳转和条件跳转命令的2D语言中,程序可能如下所示:
abc >de?v;
^hgf<
也可能是:
abc de?!;hgf04&
(如果!
是蹦床,并且&
跳到位置)
ioiioiioi
吗?
io;
办,而我所知道的就是那?
不会弹出。似乎这些是fish命令,但我认为它们不是非常标准的命令。
制作的2D越少越好。回车是另一个禁忌。不要忽略@ATaco和@ ASCII-only的提示,请尝试使Y尺寸尽可能小。
这个
###
####
########
胜过
###
###
###
##
#
#
#
#
\n
尽管Windows和Mac OS(pre-macOS)使用\n
(换行)和\r
(回车)的组合,但(换行)是在POSIX系统上经常在左对齐文本中使用的换行符。
根据语言的性质,这里有一些做某些事情的“成语”。
如果需要动态代码生成,则可以使用伪线性代码模型:
v
\"line 1"
\"line 2"
.
.
\"line N"
假设\
并v
表示他们通常做什么。
在几乎所有2D语言中,><
都是无限的,不可破坏的循环。如果出于某种原因需要这样做,那么这是最好的方法,尽管看起来可能不错:
>v
^<
实际上,如果将代码设置为1-liner,则可以使用^
或v
,如下所示:
i?vo;
这v
将把IP发送给自己,并环绕。在定向命令指向一系列(相对)无操作的情况下,您仍然可以使用此方法。
通常,具有字符串/引用框架的语言可以具有如下所示的quine:
<quote><generate "><output stack><terminate>
对于> <>,这看起来像:
":1-r>o<#
除此之外,退出时会出错并终止。它可能是最短的> <> quine,或者至少是我发现的最短的。
<
在> <> quin中有?
"
最终结果落在了错误的一边。否则,提示会很好,我在很多答案中都使用了该通用框架