?1-(v  #1)-
1   0v ^(#    0 (1+0)#)!
    (#)  ^#1-(0)#
標準準拠のインタープリターが使用される場合、これは入力と出力をバイト値として受け取ります。STDIN / STDOUTで実際に10進数を使用するには、PythonインタープリターとNUMERIC_OUTPUT = True追加オプションが必要NUMERIC_INPUT = Trueです。
説明
プログラムのスケルトンは 
?1-(    1 -
1                     )!
入力Nを最初の音声に読み込み、それをデクリメントして取得しN-1ます。また、2番目の音声をに初期化し1ます。次に、ループをN-11回繰り返し、その繰り返しごとに、2番目のスタックのシーケンスの次の値を取得します。最後にNth番目の数字を出力します。
プログラムの考え方は、シーケンスの各要素を3番目の音声のキューに入れ、各反復でそのキューの先頭を減らすことです。頭に達する0と、シーケンスの値を増やしてそれを取り除き0ます。
問題は、Preludeがキューではなくスタックを使用することです。そのため、キューのように使用するには、そのスタックを少し移動する必要があります。
v  #
0v ^
(#)
これは、シーケンスの現在の値を最初の音声にコピーし(一時コピーとして)、02番目の音声にプッシュします(キューの終わりをマークするため)。そして、ループを実行して、3番目のスタックを2番目のスタックにシフトします(つまり、逆にします)。ループの後、現在のシーケンス値のコピーを2番目のスタック(キューの末尾)の上に置きます。
 )
(#
 ^#1-
これは少しいように見えますが、基本的にはスタックを3番目のボイスに戻すループです。以来)シフト命令と同じ列にある、0私たちはお互いにそれを削除する必要があるので、私たちは第2の音声に置くには、以前にも、第三声になってしまいます#。次に、3番目の音声の先頭、つまりキューの先頭をデクリメントします。
少し面倒です-その値がのときにコードを実行したいのですが0、Preludeの唯一の制御構造(ループ)はゼロ以外の値にのみ応答します。
 0 (1+0)#
(0)#
2番目の音声の上部は真実です(ゴロムシーケンスには0s が含まれていないため)。したがって、ワークロードはその音声(後者の括弧のペア)に入ります。キューの先頭がまだない場合は、それを防ぐ必要があります0。したがって、最初に3番目の音声に「ループ」が0あり、キューの先頭がまだゼロでない場合に2 番目の音声にプッシュします。また0、3番目の音声にaを付けて、ループをすぐに抜けます。#第三声には、いずれかのことを削除する0場合、またはキューの先頭を削除することがすでにゼロでした。これで、キューの先頭がゼロの場合にのみ2番目のループに入ります(そして02番目の声ではプッシュされませんでした)。その場合、シーケンスの現在の値をインクリメントし、a 0を押してループを終了します。最後に、常に0スタックの一番上にあり、破棄する必要があります。
プレリュードでは論理否定が迷惑だと言いました...
               
              
nなく使用し2 - n % 1ます。答えが大きく異なると予想する理由はありますか?