Python代码缩短

时间:2011-04-18 15:41:55

标签: python code-snippets code-golf

我试图在这里解决这个问题: - https://www.spoj.pl/problems/PHIVAL/

问题要求您输出尽可能多的黄金比例(1 + sqrt(5))/ 2的十进制数字,并尝试最小化代码长度。

这就是我现在所拥有的。这段代码可以缩短吗?

from decimal import *
getcontext().prec=7050
print(1+Decimal(5).sqrt())/2

4 个答案:

答案 0 :(得分:3)

您可以在星号前取出空格。

<强>更新

你添加了关于无关紧要的空白的部分,所以我开始考虑采用不同的方法。如果没有计算空格,你可以做这样的事情

print"1."+`map(len,"""      








       """.split("\n"))`[1::3]

它将每个数字编码为多行字符串常量中一行上的多个空格。显然,你可以添加更多行来获得更多数字。它应该运行得非常快,因为计算量非常少。它使用 50 (更新2:45)非空白字符来产生任意数量的数字输出。

答案 1 :(得分:1)

recursive的方法推向极端,这只使用了19个非空白字符:

print '1.%d'%len('                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ')

当然,生成前1000000个数字所需的代码长度超过10 ^ 1000000个字符!

答案 2 :(得分:0)

由于短代码得分高,我认为最佳方法可能就是

print 1

答案 3 :(得分:0)

好吧,我尝试了javascript-ish方法,它显然在Python中不起作用:

import decimal
decimal.__dict__.values()[17]().prec = 7050
...

看起来你的代码非常接近最短的解决方案。