`range(…)`のより短い代替案を探しています
私が取り組んでいるゴルフコードパズルについてこれまでに見つけた最良の解決策には、2つのかなり太っているような呼び出しがありrangeます。私はコードゴルフ、特にPythonが初めてなので、いくつかのヒントを使うことができます。 関連フラグメントはこれです [x for x in range(n+1,7**6)if`x`==`x`[::-1]*all(x%i for i in range(2,x))] 最初の上限はrange鋭いものではありません。それは少なくとも98690である必要があり、他のすべてが等しい場合(ゴルフの場合、つまり)、この上限と98690の差が小さいほど、パフォーマンスの点で優れています1。私が7 6(= 117649)を使用しているの7**6は、私が思いつくことができる最も短いPython式であり、それが法案に合うからです。 対照的に、range1つ目の下限と2つ目の下限はどちらもしっかりしています。IOW、これらの制限が変更されると、プログラム(現在の形式)は誤った結果を生成します。 式の一方または両方を短くする方法はありますか range(n+1,7**6) range(2,x) ? ところで、この場合range、たとえばへのエイリアスrは何も得ません: r=range;rr rangerange 編集:FWIW、完全なプログラムはこれです: p=lambda n:[x for x in range(n+1,7**6)if`x`==`x`[::-1]*all(x%i for i in range(2,x))][0] p(n)より大きい最小の回文素数である必要がありnます。また、p再帰的であってはなりません。警告:すでに卑猥に遅いです! 1はい、わかっています。コードゴルフではパフォーマンスは重要ではありませんが、それが私が「他のすべてが等しい(ゴルフに関しては)」と書いた理由です。たとえば、私が選択したのは7**6、すぐにはわかりませんが、パフォーマンスが低く、「ゴルフと同等の」代替手段9**9です。私は実際にコードゴルフの試行を実行するのが好きです。つまり、コードを実行するのに何年もかかるほどパフォーマンスが低下しないようにします。もちろん、私がそれを助けることができれば。