我试图在这里解决这个问题: - https://www.spoj.pl/problems/PHIVAL/
问题要求您输出尽可能多的黄金比例(1 + sqrt(5))/ 2的十进制数字,并尝试最小化代码长度。
这就是我现在所拥有的。这段代码可以缩短吗?
from decimal import *
getcontext().prec=7050
print(1+Decimal(5).sqrt())/2
答案 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
...
看起来你的代码非常接近最短的解决方案。