ご存知のように、クインは独自のソースコードを出力するプログラムです。ただし、別の別のプログラムを出力して、最初のプログラムを再度出力するプログラムを作成することもできます。たとえば、Python 2プログラム
x = '''x = {}
print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3'''
print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3
実行すると、次のテキストが出力されます。
print """x = '''x = {}
print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3'''
print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3"""
Pythonプログラムとして実行すると、元のコードが再び出力されます。これは反復クインと呼ばれます。元のコードに戻すには2回実行する必要があるため、ピリオド2を持っていると言います。しかし、もちろん、もっと長い期間も可能です。
あなたの課題は、可能な限り長い期間の反復クインを、選択した言語で100バイト以下で記述することです。(上記の私の例は、末尾の改行を含めて119バイトであるため、この仕様には適合しません。)
次の規則と説明に注意してください。
- 通常のquine規則が適用されます。つまり、プログラムは独自のソースコードに直接アクセスできる言語機能を使用できません。
- 反復された出力は、最終的に元のコードに正確にループバックする必要があり、デモンストレーションまたはそれができることの証明を含める必要があります。
- また、サイクルがそうである限り、そのサイクルが長い理由の説明も含める必要があります。これは数学的な証明のレベルである必要はありませんが、あなたの言語に精通している誰かに説得力があるはずです。(この規則はここにあります。非常に大きな数の回答が含まれると予想されるためです。)
- 少なくともそれが長いことを証明できる限り、正確な数を与えるのではなく、「少なくとも1,000,000回の反復」のようなことを言っても問題ありません。この場合、スコアは1,000,000になります。そうでなければ、あなたのスコアはあなたのクインの期間です。
- 100バイトの制限は初期プログラムにのみ適用されます-それが出力するプログラムは長くなる可能性がありますが、元のコードを出力するには、最終的に100バイトに戻す必要があります。
- マシンに無限のRAMと無限のランタイムがあると想定できますが、言語に無制限の精度のデータ型(整数など)がない場合は想定できません。あなたはできるあなたのパーサが処理できる入力の長さに制限はありませんと仮定します。
- 最も高いスコアが勝ちます。
注意:Quit Whiningと呼ばれる既存の課題があります。クインを繰り返すことには、クインの反復も含まれます。ただし、同じコンセプトに基づいていることを除けば、これらはまったく異なるタイプの課題です。もう1つはまっすぐなコードゴルフですが、これは(意図的に!)偽装で忙しいビーバーの問題です。この質問への適切な回答を生成するために必要な手法は、他の質問への回答に必要なものとは非常に異なる可能性が高く、これは仕様によるものです。