Brainfuck


[外]の表記がついた項目は外部ページへリンクしています。

コードの最適化


コードを組む時に頭に入れておくと良いと思うことをここで紹介しておきます。

要素値の2種類の使い道

要素値(配列に格納されている値)の使い道は2つあります。1つは文字を扱う場合です。要素値を出力する場合は文字(ASCIIコード)として扱われます。文字として扱える範囲は10(改行)、32(半角空白)から33〜126(記号、文字)です。詳しくはASCIIコードでも見て確認してください。

2つめは[ ]のカウンタとして扱う場合。[ ]は繰り返し条件処理なので繰り返しを制御するカウンタが必要になります。このカウンタは内部完結する処理なので数字として扱われます。

このようにコードの最適化ができるようになってくると必ず、要素値を目的によって切り替えることが必要になってきます。覚えておきましょう。

コードの最適化

プログラムが組めるようになった次の段階ってなんだと思いますか? 

「コードの見易さ? 」

難解プログラミング言語はそもそも可読性を低くしようと努力している言語体系です。コードに見易さも何もありません。強いて言うなら改行してコードを揃えるくらいです。

では次の段階って何なのか。
それはコードの最適化です。

言葉だけでは何を言っているかわからないと思うので例を使って説明します。半角文字は1byteと考えてください。

以下は文字の「A」を表示するプログラムコードです。
数えてみてください、66byteあります。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.

上記コードを最適化すると以下のようになります。

++++++[->+++++++++++<]>-.

コードが25byteになりました。

どっちのコードも実行してみてください。同じ結果が得られるはずです。出力内容が変わらずコードのサイズが小さくなりましたね? コードの無駄を省くこと、これが最適化です。どんなプログラムでも容量は軽くあるべきです。そしてそれを実現するのがコードの最適化というわけです。

この考えを元にみなさんの考えたコードを最適化してみてください。