>>>>,[[<]<<+>>>[>],]<[<]<+<[>>+<[-<-<+>>]<<++[->>+<<]>]>[-]>>[<[->.[-]<[->+<]<+[->+<]>>]++++++++++.[-]<[->+<]>>]
オンラインでお試しください!
でセルをマスクしないBFのフレーバーで安全で256
、nullバイトをサポートしません。
フレーバーが保存された4バイトのネガティブメモリをサポートする場合、最初の右矢印を削除します。
説明
プログラムは3つの段階に分かれています。
Stage 1: >>>>,[[<]<<+>>>[>],]<[<]
Stage 2: <+<[>>+<[-<-<+>>]<<++[->>+<<]>]>[-]>>
Stage 3: [<[->.[-]<[->+<]<+[->+<]>>]++++++++++.[-]<[->+<]>>]
ステージ1
この段階では、文字の数をカウントしながら、すべての文字をテープに入れます。
これは、abcdefghi
このテープの後の入力用のテープです。
000 009 000 000 095 096 097 098 099 100 101 102 103
^
009
カウントです。
各文字について、左側の最初のゼロを移動して[<]
からcount <<+>>>
に1を追加し、右端のゼロ[>]
に移動して次の文字の準備をします。
ステージ2
この段階では、2番目のセルに格納されている長さの平方根を実行します。
1, 3, 5, 7, ...
繰り返し回数をチェックしながら、数値がゼロになるまで減算を続けます。
平方数はとして表現できるため機能し1 + 3 + 5 + ...
ます。
ステージ3
上記の長さの平方根をとして示しn
ます。
このステージn
は一度に文字を出力し、テープがクリアされるまで改行を出力します。