4: 2009-12-20 (日) 08:30:58 HOSINO |
5: 2009-12-20 (日) 13:20:59 HOSINO |
| +[>,.<] | | +[>,.<] |
| これさえあれば、一時的にコンソールにメモをすることが出来ます。~ | | これさえあれば、一時的にコンソールにメモをすることが出来ます。~ |
- | | |
| ***charsプログラムを作る! [#r0398d88] | | ***charsプログラムを作る! [#r0398d88] |
| 同じくabcdwでおなじみのcharsプログラムです。~ | | 同じくabcdwでおなじみのcharsプログラムです。~ |
| [>.+<-] | | [>.+<-] |
| 色々と最適化の余地があるので、考えてみてください。~ | | 色々と最適化の余地があるので、考えてみてください。~ |
| + | ***1~10の合計を数える! [#x095ab75] |
| + | K-tanさんがGUIGUI01/memoシリーズで作ったプログラムの一つである、1~10の合計を数えるプログラムをBrainf*ckで作っていきたいと思います。~ |
| + | ++++++++++ +++++++++ ++++++++ +++++++ ++++++ |
| + | +++++ ++++ +++ ++ + |
| + | . |
| + | これは誰でも思いつくと思います。~ |
| + | これを実行すると、7と表示されます。7の文字コードは55なので、1~10の合計は55であることが分かります。~ |
| + | しかし、この方法だと55回+を打ち込まないとこのプログラムは作れないので、実行しなくても何回+を打ち込んだか数えればいい話です。~ |
| + | それはBrainf*ck的には勿論のこと、一般常識に照らし合わせてみても全然カッコ良くないので、ループを使って数えさせてみます。~ |
| + | ++++++++++ |
| + | [[>+>+<<-]>-[<+>-]<] |
| + | >>. |
| + | ちょっと複雑なループですが、要は1~10の合計を数えさせているだけなので、じっくりと読んでみてください。~ |
| + | さきほどのプログラムに比べればだいぶ良くなりましたが、答えは55なのに7と表示されるのがあまりカッコよくありません。~ |
| + | しかし、Brainf*ckで55と表示させるのはかなり難しいので、1~10の合計の数だけ1を表示して、1行ずらして10ごとに0~9の数字を表示させてみます。~ |
| + | ただ、文字コードを全て暗記している人にとっては、わざわざ1を数えるよりも7と表示されたほうがいいかもしれないので、7と表示する部分も残しておきました。~ |
| + | ++++++++++ |
| + | [[>+>+<<-]>-[<+>-]<] |
| + | >>. |
| + | >++++++++++.++++++++++++++++++++++.------------------------- |
| + | [>+>+++++++<<-] |
| + | < |
| + | [>>?>.<<<-] |
| + | >++++++++++. |
| + | >>>>+++++ |
| + | [>++++++++++>++++++<<-] |
| + | >-- |
| + | >++ |
| + | >++++++++++ |
| + | [><<<.+>>>+++++++++[><<<.>>><-]<-] |
| + | かなり汚いプログラムですいません。~ |
| + | 書いているときは全く問題なかったのですが、今改めて見ると書いた自分でも「なんじゃこりゃ?」状態です。~ |
| + | しかし、それがBrainf*ckの醍醐味だと思うので気にしないことにします。~ |
| + | なお、プログラム中の?を.に変えれば、一部のOSでは1~10の合計と同じ回数音が鳴ります。~ |
| + | うるさくしても問題ない環境で試してみてください。~ |
| + | 最後に、これまでの集大成として、1~10の合計を文字コードとみなして表示する前にASCIIcodeと表示させたいと思います。~ |
| + | これでいきなり7と表示されても戸惑う事が少なくなるはずです。~ |
| + | ++++++++++ |
| + | [>++++++>++++++++>++++++++++>+++++++++++<<<<-] |
| + | >+++++.>+++.<++.++++++..>>-.>+.<+.+.>> |
| + | ++++++++++ |
| + | [[>+>+<<-]>-[<+>-]<] |
| + | >>. |
| + | >++++++++++.++++++++++++++++++++++.------------------------- |
| + | [>+>+++++++<<-] |
| + | < |
| + | [>>?>.<<<-] |
| + | >++++++++++. |
| + | >>>>+++++ |
| + | [>++++++++++>++++++<<-] |
| + | >-- |
| + | >++ |
| + | >++++++++++ |
| + | [><<<.+>>>+++++++++[><<<.>>><-]<-] |
| + | ?を.に変えると音が鳴るのは今回も変わりません。~ |
| + | このレベルのプログラムが問題なく読めて、作れるようであれば、十分%%変人%%だと思います。~ |