私はいくつかのプロジェクトオイラーの問題に取り組み始め、単純なブルートフォースソリューションで4番目を解決しました。
def mprods(a,b):
c = range(a,b)
f = []
for d in c:
for e in c:
f.append(d*e)
return f
max([z for z in mprods(100,1000) if str(z)==(''.join([str(z)[-i] for i in range(1,len(str(z))+1)]))])
解決した後、私はそれをできるだけコンパクトにしようとしました、そしてその恐ろしい収益を思いつきました!
中途半端なことをしないように、私はmprods
関数をリスト内包に凝縮しようとしています。これまでのところ、私はこれらの試みを思いついた:
[d*e for d,e in (range(a,b), range(a,b))]
明らかに完全に間違った方向に進んでいます。:-)[d*e for x in [e for e in range(1,5)] for d in range(1,5)]
これは私[4, 8, 12, 16, 4, 8, 12, 16, 4, 8, 12, 16, 4, 8, 12, 16]
に、私が期待する[1, 2, 3, 4, 2, 4, 6, 8, 3, 6, 9, 12, 4, 8, 12, 16]
か、または同様のものを与えます。
役立つPythonistasはありますか?:)