[1960] Code Golf

Title Text:I also enjoy Reverse Regular Golf. I’ve been playing for years all across the country and I’m still on the first hole.

Origin:https://xkcd.com/1960/

https://www.explainxkcd.com/wiki/index.php/1960:_Code_Golf

这是一年多来我的爱好系列中的第一部漫画。它直接跟随1959年同一个月的第二部趣味事实漫画:辛普森一家,经过两年多的时间从那个系列中脱离出来。兰德尔本月似乎回到了他的旧主题。

代码高尔夫是尝试使用尽可能少的角色来编写具有特定功能的计算机程序,类似于常规高尔夫球的目标是尽可能少地将球送入洞中。逆向编码高尔夫将编写一个给定的程序,可能是为了实现一个微不足道的结果,使用尽可能多的字符。兰德尔在漫画中显示的代码示例中的方法是创建过长的函数名称,使用赫尔曼梅尔维尔臭名昭着的长篇捕鲸小说“白鲸记”的起始行。常规代码高尔夫也会导致函数和变量的名称与程序中的目的无关,但会最小化它们的长度。

使用“尽可能多的字符”来生成代码实际上是一个不可能的目标。通过插入无用的代码或注释来延长任何给定的程序将是一项微不足道的任务。此外,一些编程语言对函数名称没有限制,因此可以简化这些语言。即使Randall使用的语言确实限制了函数名称长度,他也没有最大化他使用的那些,因为前两个是50个字符长,最后一个短得多。代码是用类似于Python的编程语言编写的,但使用关键字“efine”而不是“ef”来定义函数。 Python对函数名长度没有限制。 Python之前曾在漫画353:Python中出现过。

前两个函数定义了“ero”和“uccessor”? Peano算法的两个基本操作。据推测,程序员接下来会实现自然数加法,然后是整数,然后是原始问题需要的数学分支,都是从头开始。通常,您将使用内置函数来执行数学运算,因此从头开始实现它们是多余的。

标题文本表明兰德尔还发明了常规高尔夫球的反向版本,其目的是尽可能多地击球以将球送入洞中。与逆向代码高尔夫相似,这里唯一的挑战是玩家自己的无聊阈值,因为他们总是可以通过在不同于洞的方向上击球来增加更多的击球。

他“在全国范围内多年来一直在玩,并且仍然在第一洞”的评论是模棱两可的。通常情况下,当一个高尔夫球手说他们一直在全国各地比赛时,他们意味着他们在许多不同的球场上打过球。兰德尔可能暗示相同,但​​他从未完成第一洞(如上所述,这几乎不会令人惊讶),所以仍然认为它是连续第一洞。或者,他可能字面意思是他一直在全国各地打球。在正常的高尔夫规则下,当超出原始球场的界限时,这会导致他的投篮“超出界限”。在某种程度上,这将有助于他,因为他会招致罚球。然而,他将不得不从与最后一个相同的位置进行下一次射门,这将妨碍他继续在全国各地比赛。然而,由于兰德尔发明了这项运动,他可能选择不包括Out of Bounds规则。

有趣的是,漫画以无与伦比的左括号结束(这可能是为了创造未解决的张力。

Leave a Reply

Your email address will not be published.

Categories