BrainfuckでFizzBuzzだよー

変態FizzBuzz祭りの一環として。

なんでそんな事やってんの?馬鹿なの?

事の起こりはこのへん。
セミコロンを使わずにFizzBuzzが書きたーい!!(某Eテレ風に) - うなてっくろぐ
この記事にじみーに自分がいるけど、セミコロンなしでFizzBuzzを書いたコードは実に平凡かつ面白みもなくだいたい他人の考えた方法を組み合わせただけ。
流石に恥ずかしいので言語そのものが変態なBrainf*ckさんに頑張ってもらうことにした次第。

コード

つべこべ言わずにコード見せろやってことで

//文字準備
>++++++++[->++++++++<]>[-<+<+>>]<<++>++++++>//BF
>>+++++++++++[->+++++++++++<]>[-<+<+<+>>>]<<<
---------------->---->+>++++++++++//iuz\n
 
>>>
 
+++[->>>[->++<]>[-<+++++>]<<,<++++++[->--------<]>[->+<]<<]>>>//数値入力
[->+>+<<]>
 
//主処理
<+++<+++++>>
[-<
        -[-<<+>>]<<<+>[#!0<->[->>+<<]]<[#0-<<+>>>>>+++<<<
#Fizz#
<<<<<<<.>.>>..>>>>
        ]>>//3
        -[-<+>]<<<+>>[#!0<<->>[->+<]]<<[#0-<+>>>>+++++<<<
#Buzz#
<<<<<<<.>>>.>..>>>
        ]<//5
        >+<[[-]>-<]>[-
#Num#
>>>>>
//入力値−現在の値を出す
>[->>+<<]>>[-<+<+>>]<<<[->>>+<<<]>>>[-<-<<+>>>]<
//数値出力(上位0出力なし、後片付け)
>>>>>>>+<<
-[+<<<++++++++++<<
[->>-[->>+<<]>+>[<->[-<<+>>]]<
        [-<++++++++++<+>>]<<<
]++++++++++>>[-<<->>]
>>>>-]<
++++++[-<++++++++>]>+>>>-[+
<<<<<<<<[>+<[->>+<<]]>[[-<+>]>[-<+>]>[-<+<+>>]<<.[-]]>>[[-<+>]<<[-<+>]>>]>>>>-]
<<<<<[-]<<[-]
<<<<<<<
        ]
#改行
<<.>>
 
>>>>>]

とまぁこんな感じ。


ideoneにBrainf*ckの実行環境があったのでそこで動かしてみると
こんな感じ


…えーっと…
ちゃんとFizzBuzzできてるでしょ!!すごいでしょ!!!褒めて!!
これに2日かけたんだよ!大変だったんだよ!!!
数値の出力も、上位桁に0が残ってたのを最後の最後で


とか言われちゃったからおじちゃん頑張っちゃったよ!!
すごいでしょ!おわり!!それだけ!!!


いろいろ

  • Brainf*ckでFizzBuzz、ちょっと検索してみただけでも先駆者が日本人だけで少なくとも4人いた。なんか変態目指したのに実はよくある性癖だったみたいなオチ
  • 出力の上位桁の0の処理はしたけど、入力は0埋めして3桁で入れなきゃいけない。その気になったら改良する。
  • ideoneの実行環境は1メモリが符号付きintらしい。このせいで数十分悩まされることになった。
  • Bf本格的に(?)触ったのは今回が初めてだったけど、かなーーーりアタマの体操になる。老人にやらせようそうしよう。