BrainFuck Part.3 <[+-.,]>
■ このスレッドは過去ログ倉庫に格納されています
BrainFuckとは
難解プログラミング言語の一つ。
オシシメサイトはhttp://www.google.co.jp/
以下俺的見解
・スレッドタイトルに全命令が入る素敵な言語。
・1レス内に全命令のリファレンスが入る素敵な言語。
> ポインタをインクリメント
< ポインタをデクリメント
+ ポインタが示すメモリ位置のデータをインクリメント
- ポインタが示すメモリ位置のデータをデクリメント
. ポインタが示すメモリ位置のデータを出力
, ポインタが示すメモリ位置のデータに入力
[ ポインタが示すメモリ位置のデータがヌルなら対応する]までジャンプ
] ポインタが示すメモリ位置のデータがヌルじゃないなら対応する[までジャンプ
前スレ: BrainFuck Part.2 <[+-.,]>
http://pc11.2ch.net/test/read.cgi/tech/1177988460/
過去スレ: BrainFuck <[+-.,]>
http://pc11.2ch.net/test/read.cgi/tech/1036013915/ >>396
チューリングマシンをエミュレートすることができればチューリング完全だけど、
ほとんど自明だからだれもやらないんじゃね? 163 以下、名無しにかわりましてVIPがお送りします[] 2011/04/23 (土) 13:25:20.95 ID:7z50yigJ0 (3/3) [PC] ?2BP(1000)
http://up3.viploader.net/pc/src/vlpc007110.png
ぼくのかんがえたさいきょうのぶれいんふぁっく^^;;;;;;;;;; BrainFuckでソースを出力するとCインタプリタが動くような
二重の仮想環境を作れば、ほぼなんでも出来るようになるな borlandのコマンドラインのやつでつくったら? こういう拡張は仕様が物を言うから
手軽にできん
機能を絞るならいけるかもだが >>401
bfで出力した文字をコマンドラインに投げればいい プログラミングとかよくわからないけど、結局この言語だけで何作れんの?
文字しかつくれないの? 理屈の上ではなんでも作れるよ
なんでもっていう意味は、C言語やFortlanみたいな普通の言語と
同じだけの表現力があるっていうこと
たとえば、C言語で書ける処理は、かならずBFでも書ける
もちろん書きやすさにはだいぶ違いがあるけれど なんでも作る為には独自の実装をしないといけないと思う
メモリ配置とかシステムコールみたいな
主に番地を割り当てるのかね
純粋にBFだけ考えると入出力と計算、ループだけ
これ単体でグラフィカルなプログラミングとかは無理って解釈で良いと思うよ bfから各種APIを呼ぶエレガントな仕様案お待ちしてます 理屈は可能なのか・・・
BFが気になったからBFでプログラムの勉強してみようかなと思ったんだけど
やっぱCとかからはじめたほうがいいのかね いくらなんでも釣りだろ
ネタ言語だぞ
これで学べることはかなりプリミティブなものに限定される bfはアセンブラとか基本情報とか勉強した人が遊ぶ言語だから
cとは全く別物
何言語から始めるかは目的によるが
そういう話はこのスレで扱わない
この板にそういうスレあるから見たらいいよ よく知らない言語でも、BFと同じ処理ができればチューリング完全だと言える。
その点がBFの存在意義なんじゃないかと思っている。
マトモにプログラム書く気でBFを使うのは、やめとけ。 >>414
今時ならエミュレータでも充分実用的な速度が出るだろう。 >>409
エレガントかどうかは分からんが、これくらいしか思い浮かばない。
API呼び出し命令を追加。
(関数ポインタか何か)APIを識別する数字と、APIに渡す引数をメモリにセットしてから
API呼び出し命令を処理すると、APIが呼ばれ、戻り値がセットされる。 特定の番地のメモリがインクリメントされることをOSがトリガとして感知して起動とかかな CPUと外部割込み機器の通信みたいになってきたな…
もしくはシステムコール呼び出しか…w >>410
プログラマ向けのパズルみたいなものですよ なんだBF系じゃないのか
長門有希とかあったよなぁ BF コンパイラが BF で記述される日はまだまだ遠い‥‥。 入力命令もあるよ
標準入力を標準出力にコピー
ほむ ほむほむほむほむ ほむ ほむほむほむ ほむ ほむほむほむ ほむほむほむ Scalaなんだな。
うまくコンパイルできないのだが。 >>427
ttp://code.google.com/p/awib/ >>432
へー、こりはおどきました。thanks
マルチスレッド対応まだ?
SIMDいつ対応するの?
グラフィックどうするの? >>429
↓↓↓↓↓↓
「「「「「「「「「 入力命令もあるよ 」」」」」」」」」(キリッッ!!!!キリッッ!キリッきリッッッッッ
↑(キリきリッ!!!!
↓↓↓↓↓↓↓↓↓
「「「「「「「「「 標準入力を標準出力にコピー 」」」」」」」」」(←キリッッ!!ッッッッ!!!!
↑↑↑↑↑↑↑↑↑(キリッッ!!!!
↓↓↓↓↓↓↓↓↓↓
「「「「「「「 ほむ ほむほむほむほむ ほむ ほむほむほむ ほむ ほむほむほむ ほむほむほむ 」」」」」」」(キリッ!キリッ!!!キリ!!!!!!
↑↑↑↑↑↑↑↑↑(キリッ!!
死ねゴミ キ ポインタをインクリメント
リ ポインタをデクリメント
↑ ポインタが示すメモリ位置のデータをインクリメント
↓ ポインタが示すメモリ位置のデータをデクリメント
き ポインタが示すメモリ位置のデータを出力
り ポインタが示すメモリ位置のデータに入力
「 ポインタが示すメモリ位置のデータがヌルなら対応する」までジャンプ
」 ポインタが示すメモリ位置のデータがヌルじゃないなら対応する「までジャンプ すいません。コンパイルしようと思ったらvcvers32が外部と内部で実行できません。って
出てきたんですけど・・・・どうすればいいんですか? >>444
日本語でOK!
つーか、きっとスレ違いだ。 ポインタを例えば100進めるのに、>を100回書かずもっと短く書く事って可能?
俺の頭じゃやり方が思いつかなかった >>446
ループを使うんだよ
100=10*10
++++++++++[>++++++++++<-] 現在地から100番地先まで全部ぶっ壊しても良ければ
[-]>++++++++++[<++++++++++>-]<[>[-]<[->+<]>-] 2〜99番地のデータを0〜97番地に退避しながら100まで移動
0〜1番地は破壊される
[-]>[-]++++++++++[<++++++++++>-]<--
[[>+<-]>>[<<+>>-]<-]>>
100まで行った後にデータを元に戻しながら0まで戻るのも書いてみたけど、
合計すると100バイト超えちゃったよ ttp://www.hevanet.com/cristofd/brainfuck/dbfi.b
ここのより短いインタプリタってある? これって一応C言語並に複雑な事出来るらしいけど
実際そこまで作りこんだソフトとかあんの? 標準入力と標準出力しか無いからな。出来ることは自ずと限られてくる。
そこでだ、画面同期('?')や出力位置設定('X','Y')といったゲーム用命令を追加した拡張BF
"a brainf**k console develop environment for game" (ABCDEFG)
というのを考えた。
お前ら実装してくれていいぞ。 這い寄る混沌:「(」・ω・)」うー(/・ω・)/にゃー」でプログラムが書ける言語「Nyaruko」登場 - ねとらぼ
http://nlab.itmedia.co.jp/nl/articles/1204/19/news112.html
この手のネタは正直お腹いっぱいだけどまあ一応 ttp://code.google.com/p/zozotez
bfで書いた pure lispなんてのもあるんね なくもない。
が、今は余裕がないので
暇になったら貰う。 >>470は期限切れ削除されました。必要な方いらっしゃったらレス下さい。 ttp://www.hevanet.com/cristofd/brainfuck/dbfi.b
なんでインタプリタとして作動するのかだれか解説してください http://www.dotup.org/uploda/www.dotup.org3262233.7z.html
ステップ実行,ブレーク,コンソール出力とかできます.
メモリは勝手にダンプします.HEXとASCII文字(21-7E)で1行に8つずつ吐きます.
実行した命令の数を吐きます.かかった時間も吐きます.
入力は,事前にたくさん打っとけば,なくなるまで一時停止せずに使います.何も入力されていなければ一時停止します.
Cっぽい擬似コードも吐きます. BFって気合次第でバイナリファイルの出力とかできるんじゃね?
と思い、bmp出力をさせてみた。
http://www.mediafire.com/?r853ewgh62fv11k +++++[>++>+++[<]>-]>[<+++++>>+++
++>+++<<-]<[>++<-]+++[>>++<<-]>>+.<+.<+
++[>++<-]>+..<++[>+<-]>+.>>++.[<]++
+++[>>+++<<-]>>.<.<++[>++<-]>-.>>>++
+[<<<-->>>-]<<<.<++++[>--<-]>.>>[<+>-]++[<-->-]<.
やっとできた(´・ω・`) ++++[>+++<-]>[<+++++++>->+++++<]+
+[<-->-]>[<++>>++<->-<]++++[>>+++
++<<-]>[<++>-]>[<<->+>-]+++[>++
+<-]>+<<[>>+<<-]>>[<+<+[>]<-]<[<]>.>>--
-.>++>>++++[>++<-]>[<++>-]<[<+>-]<.<.[<]>.>
>.>>.<.[<]>.>>.[<]>.>>.>>.[<]>.>>.>.[<]>.[>]+
+[<<<++>>>-]<<<.[>]+++[[<]>>--[>]<-]<[<]>>.[>]+
++[<<<++[>]<-]<<<+.[<]>++.>>---.[>]>++
++[<++++>-][[<]>+[>]<-]<[[<]>+[>]<-]<[<]>+.++. 最近、Brainfuckにはまりました。
JavaScriptインタプリタを作ってみましたので、ぜひ使ってみてください。
http://upup.bz/brain_f.html JavaScriptをBFで書いたのかと思って期待したじゃないか 実行環境で一番おすすめのってどれ?
ぐぐったらたくさん見つかるのだけどどれもイマイチ >>484
大して難しくないんだから自分で「イマイチ」じゃないように作ればいいじゃん。
尤も、他人に「イマイチ」である理由を説明できない位だと難しいかも試練が。 brainfuckでbrainfuckインタープリタを作ってみた 部室の入り口にbrainf*ckのコードが書いてあった 変形版Brainfuck
ジャンプ先のプログラムカウンタの値を記憶するためのスタックを用意しておく
> ポインタをインクリメント
< ポインタをデクリメント
+ ポインタが示すメモリ位置のデータをインクリメント
- ポインタが示すメモリ位置のデータをデクリメント
. ポインタが示すメモリ位置のデータを出力
, ポインタが示すメモリ位置のデータに入力
* 現在のプログラムカウンタの値をスタックに入れる
/ ポインタが示すメモリ位置のデータがヌルでなければ、スタックから取り出した値までジャンプ
ヌルならばスタックから値を抜き去り、次の命令にジャンプ
本家BFの場合は対応する括弧を調べる作業が必要だが変形版だとその必要はない
そのかわり後方へのジャンプはできないが、原理的には本家と同じくチューリング完全(…だと思う) >>491
後方ジャンプがないとチューリング完全にならないと思う ■ このスレッドは過去ログ倉庫に格納されています