あなたの仕事は、シーケンス内の各プログラムの長さが500バイトに制限されている、最も長い期間反復するquineを作成することです。
つまり、次の手順を繰り返す場合:
- 最初のプログラムから始めます
- 現在のプログラムを実行する
- 手順2に戻る
最終的に元のプログラムに戻ります。サイクル内のプログラムの数はスコアであり、最大化しようとしています。
どのプログラムでもエラーは発生しません。各プログラムも同様に実行する必要があります(異なるバージョン、実装、コンパイラオプション、プラットフォームなどはありません)(編集:はい、擬似乱数ジェネレーターのような外部状態は最後に含まれていましたステートメント。外部状態は、各実行後に「リセット」する必要があります。真の乱数を使用する場合、最悪の場合が想定されます。
この課題と最長期間の反復クイン(100対500以外)との違いは、サイクル内のすべてのプログラムも500バイト以下でなければならないことです。これは、可能な最長のサイクルが(256 ^ 501-1)/ 255以下であることを意味します。それはもちろん大きな数字ですが、計算に必要なコードの量という点ではそれほど大きくはありません。したがって、課題は、できるだけ多くの(256 ^ 501-1)/ 255の可能性を使用することであり、忙しいビーバーの課題ではありません。
プログラムが独自のソースコードにアクセスすることは許可されていません。ただし、必要に応じて空のプログラムを使用できます(他の規則に従う場合)。
プログラムを手動でチェックするのは難しいので、理論的な方法を使用してスコアを計算することができます。プログラムにスコアと正確さの説明を含める必要があります。スコアを把握できない場合は、代わりに、サイクル内のプログラム数の下限を事実上のスコアとして使用できます。より良い下限を見つけた場合、または正確な実際のスコアを見つけた場合、これを更新することができます。
これはコードチャレンジなので、最高のスコアが勝ちます!
編集:あなたのスコアが科学的記法であるものを書くことをお勧めします。そうすれば、答えはより簡単に比較できます。他の形式のスコアも特に問題なくプログラムに関連付けられている場合、まったく問題ありません。また、読者はこれに準拠するために以前の回答を編集することをお勧めします。