この128言語のウロボロス(別の言語でプログラムを出力するプログラム、さらに別の言語でプログラムを出力するプログラム(後で125言語)、元のプログラムを出力するプログラム)はかなり印象的です。しかし、残念ながら、静的な反復回数があります。
プログラムを出力するプログラムを書く(別の言語で必ずしもが、それはすることができ)、反復nの後、元のプログラムを出力するなど、プログラムを出力するプログラム、出力する第一の時間(すなわちない中間体をプログラムは元のプログラムと同じである必要があります。それ以外の場合、入力を無視するクインが機能します)。ここで、nは入力として提供される負でない整数です。入力は、元のソースコード内の単なる数値にすることはできません(たとえばx = <the value of n>
、プログラムの先頭に置く)。次のいずれかである必要があります。
- コマンドライン引数として渡されます
- 標準入力から読み取る
- 新しいプログラムを返す/出力する関数に引数として渡されます。
ウロボロスの中間段階の場合、プログラムは完全に機能するプログラムか、引数のない関数のいずれかであり、呼び出されると次のプログラムを返す/出力します。
ソースファイル自体を読み取ったり、クインのような組み込み関数を使用したりすることはできません(これを行うものはないと思いますが、あるかもしれません)。
明確にするために、の場合n = 0
、プログラムは独自のソースコードを出力する必要があります。
の場合n = 1
、プログラムは元のソースコードを出力する別のプログラムを出力する必要があります。
等々...
最少バイトが勝ちます!
編集:
「ウロボロスの中間段階の場合、プログラムは、入力なしの完全に機能するプログラムか、引数なしの関数のいずれかになります」と書いておく必要があります。あなたのプログラムは、チェーン内の次の1を出力した場合、その後の細かいことを、入力を待ちますが、あなたのプログラムは、nの元の値を必要はありません。
getInput()
、入力が提供されずになどが使用された場合に対処する必要があると思います。または、getInput()
?のエラーを防ぐために、後の反復で使用されないランダムな入力を行うとしましょう。別名現在のPythonの回答は有効ですか?
n
ウロボロスのクインの「初期プログラム」であるプログラムを出力することn
であり、私たちの答えはn
反復の1つとしてカウントされるべきではないのではないかと思います。これは正しいです?