Home > Archives > 2017年06月12日

2017年06月12日

今更ながらに BrainF*ck

いろいろな言語で 1 から n までの足し算を書いてみようとかいう内容の演習で,ひとつくらいは変な言語を入れたほうが経験になるよねということで BrainF*ck をやってみることにした.少なくとも整数値が扱えるし文字の出力もあるし.

で,今日はその準備で…… 実は値をコピーするだけでも面倒だということに気づいた.ポインタひとつしかないし,ループも非ゼロ判定での繰り返ししかないし.とりあえず元の値がゼロになるまで他の2箇所をインクリメントしてコピー2つを作ってあげて,その後に元の値が壊れてしまったのをコピーひとつ壊して修復してあげる,というので良さげだけど.あとはゼロ判定で何かしたい時に if(i==0) を実現するのに変数の値のゼロ非ゼロをひっくり返さないとならないので手で書くのはめんどい.そもそも while を if の代わりに使うには述語の値をゼロに落とすことになるので値が破壊されてめんどいし.

あとは数を10進数で出力するってのも結構めんどい.割り算がないのでまずはそれを実装する必要があるし.とりあえず,除数を引けた回数をカウントするという実装にしてみたけれど,もっとスマートな方法があればいいなぁ.というか,割り算を「除算」って言うのは除数を除いていけばいいからなのか?

Home > Archives > 2017年06月12日

Search
Feeds

Page Top