拡張BrainFのインタプリタっぽいもの。 ちょっと最適化してます リスト「message」を読んで答えてね https://turbowarp.org/1279143573/ -------仕様------- ・とても重い ・スタックは可変式。すなわち、200000までは足りないと補う、ということを繰り返す。余分なメモリの排除。 ・スタックはスライドループ式(端が存在しない)わけではありませんから、そうしたい場合は最初にシフト演算でずらして使用してください ・8bitにするかは選べる。8bitを選択した場合、EOFを0か-1にできる。 ・上で8bitではなく無限整数(32bit)を選んだ場合は負数に対応。 -[-]などに注意しなければならない。 ↑ここまでは拡張されたもの ・ネストされた大カッコ対応 ・大文字・小文字対応 -------技術的な説明------- ・標準BFと同じ機能を持つ演算子8個 ・ASCIIコードに対応。ただし半角スペース、改行文字以外の制御文字はすべて?に置き換えられている。 テストコード2: 11.自作if文 A部分が+++のときのみHello World! 「 >(A)>[-]<---[[-]+>]<[[-]>+<<]>>[<+>-]<<+>[<->-]<[[-]>++++++++[<+++++++++>-]<.>>>+<++++++++++[<++++++++++>-]>[<<+>>-]<<.>>>>++[<<<[-]>>++++++++<++++++++++[<++++++++++>-]>[<<+>>-]<<.>>>-]<<>+++[<+++++++++++++++++++++++++++++++++++++>-]<.>>++++[<++++++++>-]<.>>+++[<+++++++++++++++++++++++++++++>-]<.>>+++[<+++++++++++++++++++++++++++++++++++++>-]<.>>++++++[<+++++++++++++++++++>-]<.>>>++++++++<++++++++++[<++++++++++>-]>[<<+>>-]<<.>>++++++++++[<++++++++++>-]<.>>>+++<+++++[<++++++>-]>[<<+>>-]<<.[>]] 」 12.BrainFインタプリタ←すげえ,TurboWarp必須 「 >>>>,[>+>>,]<<[<<<]>>>-<[[>>+>>>+<<<<<-]>>[<<+>>-]++++++[<<------->>-]+<<-[[-]>> -<<]>>>>>[<<<<<+>>>>>-]<<<[>>[>>>]>>>[>>>]<+<<[<<<]<<<[<<<]>-]<<[>>+>>>+<<<<<-]> >[<<+>>-]++++++[<<------->>-]+<<--[[-]>>-<<]>>>>>[<<<<<+>>>>>-]<<<[>>[>>>]>>>[>> >]<,<<[<<<]<<<[<<<]>-]<<[>>+>>>+<<<<<-]>>[<<+>>-]+++++[<<--------->>-]+<<[[-]>>- <<]>>>>>[<<<<<+>>>>>-]<<<[>>[>>>]>>>[>>>]<-<<[<<<]<<<[<<<]>-]<<[>>+>>>+<<<<<-]>> [<<+>>-]+++++[<<--------->>-]+<<-[[-]>>-<<]>>>>>[<<<<<+>>>>>-]<<<[>>[>>>]>>>[>>> ]<.<<[<<<]<<<[<<<]>-]<<[>>+>>>+<<<<<-]>>[<<+>>-]++++++[<<---------->>-]+<<[[-]>> -<<]>>>>>[<<<<<+>>>>>-]<<<[>>[>>>]>>>[>>>]+<<<-<<<[<<<]<<<[<<<]>-]<<[>>+>>>+<<<< <-]>>[<<+>>-]++++++++[<<-------->>-]+<<++[[-]>>-<<]>>>>>[<<<<<+>>>>>-]<<<[>>[>>> ]>>>[>>>]+>>>[-]<<<[<<<]<<<[<<<]>-]<<[>>+>>>+<<<<<-]>>[<<+>>-]+++++++[<<-------- ----->>-]+<<[[-]>>-<<]>>>>>[<<<<<+>>>>>-]<<<[->>[>>>]>>>[>>>]>+<<[[<+>-]>>-<<]<[ >+<-]>>>[-<<<<[<<<]<<<[<<<]>+[<+>>>-<[>>+>>>+<<<<<-]>>[<<+>>-]+++++++[<<-------- ----->>-]+<<[[-]>>-<<]>>>>>[<<<<<+>>>>>-]<<<[<<<+>>>-]<<[>>+>>>+<<<<<-]>>[<<+>>- ]+++++++[<<------------->>-]+<<--[[-]>>-<<]>>>>>[<<<<<+>>>>>-]<<<[<<<->>>-]<<<[> >>+<<<-]>>>]>>[>>>]>>>[>>>]>]<<<<[<<<]<<<[<<<]>]<<[>>+>>>+<<<<<-]>>[<<+>>-]+++++ ++[<<------------->>-]+<<--[[-]>>-<<]>>>>>[<<<<<+>>>>>-]<<<[->>[>>>]>>>[>>>]<[>> +>>>+<<<<<-]>>>>>[<<<<<+>>>>>-]<<<[[-]<<<<[<<<]<<<[<<<]<<<<<-[>>->>>+<<<<[>>+>>> +<<<<<-]>>[<<+>>-]+++++++[<<------------->>-]+<<[[-]>>-<<]>>>>>[<<<<<+>>>>>-]<<< [<<<+>>>-]<<[>>+>>>+<<<<<-]>>[<<+>>-]+++++++[<<------------->>-]+<<--[[-]>>-<<]> >>>>[<<<<<+>>>>>-]<<<[<<<->>>-]<<<[<<<->>>+]<<<]>>>>>>>>[>>>]>>>[>>>]>]<<<<[<<<] <<<[<<<]>]<+>>>[-]<] 」 標準入力にプログラム書く
update 2/19 +++→3で変えたが普通のものはあまり変わらない.連続したものが多いプログラムに強くなった. v2.0.0 = ver.Convert617ClearJunpTable 2/18 数値化を行って[-]をつけたためconvertを含めても少し早くなった.またそれに伴って+-<>.,[]以外の文字は無視されるようになった.v1.0 2/17 数値化をするため一度[-]を削除. 2/17 [-]を0にする演算として導入.v0.4 2/17 logに時間を追加,[]を最初にリストに追加することで[]が多いものは早くなった.v0.3 2/14 +[>]でスタックが動的であるためループが終了しないバグを修正.ポインタ操作の順序を変更.v0.2 2/13 v0.1 歴史 Hello World! v0.2...48ms程 v0.3...44ms程 ↓ここからはConvertを含む v0.4~v1.0...23ms程 v2.0.0...最速18ms程 10^6、Turbowarp ~v1.0...7500ms前後 v2.0.0...2500ms前後,scratchでは136467ms=136.467s テスト用(下に行くほどすごいらしい): 1.標準入力 「,.>,.>,.>,.>,.>,.>,.>,.>,.>,.>,.>,.>」 2.Hello World! 「+++++++++[>++++++++>+++++++++++>+++>+<<<<-]>.>++.+++++++..+++. >+++++.<<+++++++++++++++.>.+++.------.--------.>+.>+」 3.アスキーアート by Note 「++++++++++++++++++++++++++++++++......++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++.....<.>>++++++++++.<....++++++++.--------...+++++++.-------.<++++++++++++++++++++++++.>.<----------------------.>+++++++++.---------.++++++++++++++++++++++++++++.>++++++++++++++++++++++.<<++++++.+++++++++++++++.------------------.++++++++.>>>++++++++++.<....++++++++.--------.......+++++++++.>.<---------....<<+++++++++++++++++.>>...<<.>>..<<.>>>.<....++++++++.<<-----------------------------...>>+.---------.<<..>>+++++++++.」by Note 4.フィボナッチ(重い)(スタック)(無限整数環境) 「 +>+<[[->>+>+<<<]>>>[-<<<+>>>]<<[->+>+<<]>>[-<<+>>],+[-]<<] 」 5.100までの素数 「 >++++[<++++++++>-]>++++++++[<++++++>-]<++.<.>+.<.>++.<.>++.<.>------..<.> .++.<.>--.++++++.<.>------.>+++[<+++>-]<-.<.>-------.+.<.> -.+++++++.<.> ------.--.<.>++.++++.<.>---.---.<.> +++.-.<.>+.+++.<.>--.--.<.> ++.++++.<.> ---.-----.<.>+++++.+.<.>.------.<.> ++++++.----.<.> ++++.++.<.> -.-----.<.> +++++.+.<.>.--. 」 6.無制限fizzbuzz 「 ++++++++++[>>>>--[<]-[>]<<+[->--<<+>]>+++>>----[<]-[>]<<+[->----<<<<<+>>>>]>+++++>>>+[[-]>>[-]<---------[<]-[>]<<+[->--------->+<<]>++++++++++<+>>]+[<<]<<<<+<[+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++.+++++++++++++++++..-------------------------------------------------------------------------------------------------------------------------->[-]<]<[+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++.+++++..-------------------------------------------------------------------------------------------------------------------------->>[-]<<]>>[->>>>>>->>[>>]<<[<++++++++++++++++++++++++++++++++++++++++++++++++.------------------------------------------------<]<<<<<<]<<<.] 」 100まで 「++++++[->++++>>+>+>-<<<<<]>[<++++>>+++>++++>>+++>+++++>+++++>>>>>>++>>++< <<<<<<<<<<<<<-]<++++>+++>-->+++>->>--->++>>>+++++[->++>++<<]<<<<<<<<<<[-> -[>>>>>>>]>[<+++>.>.>>>>..>>>+<]<<<<<-[>>>>]>[<+++++>.>.>..>>>+<]>>>>+<-[ <<<]<[[-<<+>>]>>>+>+<<<<<<[->>+>+>-<<<<]<]>>[[-]<]>[>>>[>.<<.<<<]<[.<<<<] >]>.<<<<<<<<<<<]」 8.0^2~100^2 「 ++++[>+++++<-]>[<+++++>-]+<+[>[>+>+<<-]++>>[<<+>>-]>>>[-]++>[-]+ >>>+[[-]++++++>>>]<<<[[<++++++++<++>>-]+<.<[>----<-]<] <<[>>>>>[>>>[-]+++++++++<[>-<-]+++++++++>[-[<->-]+[<<<]]<[>+<-]>]<<-]<<-] 」 7.クワイン(スタック811までいくんで気長に)(8bit環境) 「 ->++>+++>+>+>+++>>>>>>>>>>>>>>>>>>>>>>+>+>++>+++>++>>+++>+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+>+>>+++>>>>+++>>>+++>+>>>>>>>++>+++>+++>+>>+++>+++>+>+++>+>+++>+>++>+++>>>+>+>+>+>++>+++>+>+>>+++>>>>>>>+>+>>>+>+>++>+++>+++>+>>+++>+++>+>+++>+>++>+++>++>>+>+>++>+++>+>+>>+++>>>+++>+>>>++>+++>+++>+>>+++>>>+++>+>+++>+>>+++>>+++>>+[[>>+[>]+>+[<]<-]>>[>]<+<+++[<]<<+]>>>[>]+++>+[+[<++++++++++++++++>-]<++++++++++.<] 」 8.100までの素数 〜改行アレンジを添えて〜 「 >++[<+++++>-]>++++++++[<++++++>-]<++.<.>+.<.>++.<.>++.<.>------..<.> .++.<.>--.++++++.<.>------.>+++[<+++>-]<-.<.>-------.+.<.> -.+++++++.<.> ------.--.<.>++.++++.<.>---.---.<.> +++.-.<.>+.+++.<.>--.--.<.> ++.++++.<.> ---.-----.<.>+++++.+.<.>.------.<.> ++++++.----.<.> ++++.++.<.> -.-----.<.> +++++.+.<.>.--. 」 9.モードを比較する(8bitモードなら8 bit cellsという) 「 ++++++++[>++++++++<-]>[<++++>-] +<[>-< [>++++<-]>[<++++++++>-]<[>++++++++<-] +>[> ++++++++++[>+++++<-]>+.-.[-]< <[-]<->] <[>> +++++++[>+++++++<-]>.+++++.[-]< <<-]] >[> ++++++++[>+++++++<-]>.[-]< <-]< +++++++++++[>+++>+++++++++>+++++++++>+<<<<-]>-.>-.+++++++.+++++++++++.<. >>.++.+++++++..<-.>>- [[-]<] 」 10.10段ハノイの塔 「 >>>>+++++++++>+>+>+++<<< [ >[ <-[ [>>>>+>>>>+>>>>+<<<<<<<<<<<<-] >[>>>>+>>>>+>>>>+<<<<<<<<<<<<-] >[>>>>+>>>>+>>>>+<<<<<<<<<<<<-] >[>>>>+>>>>+>>>>+<<<<<<<<<<<<-] <++++++>>+>->>>>>>> [<<<<<<<<<<<<+>>>>>>>>>>>>-] >[<<<<<<<<<<<<+>>>>>>>>>>>>-] >[<<<<<<<<<<<<->>>>>>>>>>>>-] >[<<<<<<<<<<<<+<->>>>>>>>>>>>>-] <<<<<[>>+>+<<<-] >[>+<-]++++++>[<->-]>[<<<+>>>-] <<<<<- ]+>- ]++++++++[>++++++>++++++<<<++++++++>-]>>>>++++[<++++++++>-]<<<<<.[-]>>>>.<<.[-]>>.[-]<.[-]++++++++++.[-]<<<<<<< ] 」