真有趣!但是,只有三位数,乐趣还为时过早。这个挑战是相似的,但我们会继续保持乐趣。
挑战
尽可能多地打印黄金比例 φ的数字。黄金比率定义为满足φ=(φ+ 1)/φ的数字,并且前100位数字由下式给出:
1.6180339887498948482045868343656381177203091798057628621354486227052604628189024497072072041893911375 ...
这个挑战不是关于计算φ!这是关于尽可能多地打印数字,而无需使用任何方法进行两次打印。因此,请找到尽可能多的创造性方法来获取数字!
限制条件
就其本身而言,打印φ的数字有点太简单了,因此规则如下:
- 您必须按从左到右的顺序构造数字,方法是逐段打印,也可以从左至右构造一个字符串,最后打印它-您甚至可以生成一个数字字符数组,然后将其连接起来并打印它,只要您按顺序进行即可。在以下规则中,“打印”和“输出”可能是指那些过程中的任何一个(例如,如果您正在构建字符串,并且该字符串包含已被
1.6
视为1.6
已打印的字符串)。 - 对于您的代码,每位预算为15个字符。该期间不计入该预算,但也必须打印出来。请注意,该限制仅针对总代码大小:您可以对任何数字使用超过15个字符,只要您平均不使用更多字符即可。实际上,您可能会在字符中累积一个“债务”,并在以后“偿还”。例如,要打印,
1.618
您有60个字符。 - 标准库包含/导入不计入代码大小。但是您不能免费给这些包含速记别名的东西!
- 您不得使用当前正在生成的数字,也不得使用任何已打印的数字。例如
1
,在源代码中可能没有出现,因为它是第一位。输出8
in 的代码1.618
可以使用任何或所有数字[0234579]
,但不使用任何数字[168]
。为此,将所有等同于单个数字的文字视为该数字。因此,如果您的语言可以表示9
,'\t'
那么您将不能在任何地方使用该语言,9
而不能使用它。 - 您不能一次产生多个数字。应该有可能将您的代码清楚地分成几块,一次生成一个数字。
您不得引用在生成较早数字的代码中使用的任何内置函数,数学/布尔值/按位/字符串运算符,变量或常量。整数到字符串的转换,字符串连接和打印功能可能是例外,您可能需要为每个数字输入。请注意,您使用哪个名称来指代任何内置都没关系:仅仅因为您
PI
为两者都内置了别名p
,q
并不意味着您可以p
一次使用q
一次。同样,如果名称引用了两个不同的内置名称(例如string 和array),则允许您使用两次名称。length
length
如果您的编程语言没有函数,请根据其最佳判断(例如bash脚本编写),调用其他程序应遵循对函数施加的规则
- 您的提交必须以单一语言编写。因此,也无需执行另一种语言的解释程序来访问该语言的内置程序。
含义
上述规则隐含了以下几点,但我在此处添加它们是为了避免沙箱中已经出现的问题:
- 您不能通过
'\b'
在两者之间打印一些退格键(通常是)来覆盖部分输出。 - 禁止产生/输出多个数字的循环。(不过,计算一位数字的循环就可以了。)
(1 + √5)/2
禁止使用混淆版本或将斐波那契数除以获取多个位数。- 您无法预先计算10位数字并将它们存储在10个变量中,然后再引用它们,因为那些变量引用不会生成数字-填充变量的代码会生成数字,因此这违反了规则6。
- 实际上,您不能重复使用任何先前的(或中间结果),因为这将意味着两位数字将共享要生成的代码。
- 否则,您可以使用任何方式(不必完全是数学方法)来生成数字。(你应该!)
- 实际上,如果您可以使用标准库从许多不同的地方提取正确的数字,则无需进行任何计算。
- 在生成一个数字时,您可能会多次使用运算符,因此生成第一个数字
2+2+2
很公平6
(尽管这不太可能是最短的)。 - 您可以随意使用任何文字,因为它们不是内置常量。因此,只要不必打印
5
,您就可以5
在您的代码中随意添加。 - 您无法对输出进行硬编码,因为这将涉及使用要输出的数字。
简而言之:请勿使用任何方法来两次生成数字,也不要使用您当前正在输出或已经打印的数字。
如果您确实发现了漏洞,可以得到(准)无限的分数,请不要通过利用漏洞来破坏挑战,但请告诉我,我可以看看漏洞是否可以解决而不会破坏任何东西。
计分
正确打印最高位数的程序将获胜。如果是平局,则较短的代码会打破平局。
请添加未注释的注释版本,以标识代码的哪个部分生成哪个数字。
PS:如果有人击败了上面的100位数字,这里还有更多。
x = (x+1)/x
(或x^2 = x+1
)(或x^2-x+1
)上使用二次公式。