我试图在这里解决这个问题:- https://www.spoj.pl/problems/PHIVAL/
问题要求您输出尽可能多的黄金比例(1+sqrt(5))/2的十进制数字,并尽量减少代码长度。
这是我现在有的。这段代码可以再短一点吗?
from decimal import *
getcontext().prec=7050
print(1+Decimal(5).sqrt())/2
可以去掉星号前的空格。
更新:
你添加了关于无关紧要的空白的部分,所以我开始考虑另一种方法。如果空格不被计算在内,你可以这样做
print"1."+`map(len,"""
""".split("n"))`[1::3]
在多行字符串常量中,将每个数字编码为一行上的空格数。显然,你可以加更多的行来得到更多的数字。它应该运行得非常快,因为只需要做很少的计算。它使用50 (update 2:45)非空白字符来产生任意数量的数字输出。
将recursive
的方法发挥到极致,它只使用了19个非空白字符:
print '1.%d'%len(' ')
当然,生成前1000000个数字所需的代码长度将超过10^1000000个字符!
由于短代码得分高,我认为最好的方法可能只是
print 1
我尝试了javascript-ish的方法,显然它在Python中不起作用:
import decimal
decimal.__dict__.values()[17]().prec = 7050
...
看起来你的代码非常接近于最短的可能解决方案。