>>>>,[[<]<<+>>>[>],]<[<]<+<[>>+<[-<-<+>>]<<++[->>+<<]>]>[-]>>[<[->.[-]<[->+<]<+[->+<]>>]++++++++++.[-]<[->+<]>>]
オンラインでお試しください!
でセルをマスクしない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は一度に文字を出力し、テープがクリアされるまで改行を出力します。