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/
BrainFuck Part.3 <[+-.,]>
■ このスレッドは過去ログ倉庫に格納されています
2009/01/08(木) 12:09:18
2009/03/24(火) 18:17:48
>>91
-<[<>+.,
-<[<>+.,
2009/03/24(火) 19:15:54
>>92
[<+][,.,
[<+][,.,
2009/03/26(木) 21:34:05
+ → いろはにほへと
- → ちりぬるを
> → わかよたれそ
< → つねならむ
[ → うゐのおくやま
] → けふこえて
. → あさきゆめみし
, → ゑひもせす
濁音・半濁音・小文字は清音と一緒
「ん」はスルー
- → ちりぬるを
> → わかよたれそ
< → つねならむ
[ → うゐのおくやま
] → けふこえて
. → あさきゆめみし
, → ゑひもせす
濁音・半濁音・小文字は清音と一緒
「ん」はスルー
2009/03/27(金) 04:37:11
ルール考えるのはいいけど、
それで自分でプログラム書いてみろってばさ。
それで自分でプログラム書いてみろってばさ。
2009/03/28(土) 15:17:10
Urban Muellerさんに言ってるんだな
2009/03/30(月) 23:42:15
もう痴漢ネタは秋田
2009/04/10(金) 11:23:47
ほしゅ
2009/04/16(木) 22:58:24
ほしゅう
100デフォルトの名無しさん
2009/04/25(土) 15:59:46 ごしゅう
101デフォルトの名無しさん
2009/05/08(金) 00:39:19 じ
102デフォルトの名無しさん
2009/05/15(金) 21:03:39 +
103デフォルトの名無しさん
2009/05/17(日) 20:47:00 []
104デフォルトの名無しさん
2009/05/17(日) 23:05:24 > > > > > >
105デフォルトの名無しさん
2009/06/04(木) 21:57:56 無ネタ
106デフォルトの名無しさん
2009/06/13(土) 16:24:34 +++[>+++<-]>[>+>+<<-]>->>++++++++++[<++++++++++>-]<------------.++++++<.>.<.>--.++<.>
107デフォルトの名無しさん
2009/06/20(土) 16:17:42 ]
108デフォルトの名無しさん
2009/06/22(月) 01:30:36 、
109デフォルトの名無しさん
2009/08/02(日) 21:49:41_.。ャぁて丕刀フ7ゎ。._
,.ィ炙ヲi≠┴⇒弍j込ス>。
. ,ィ升ヲナ'´ `゙'<弖心、
. ;夕フア´ \ホi心.
んfiУ ▽ij∧
从j'Y ∨iハ
. 斤W kい
|友カ }ソ川
. い叭 仄ガ
. Wi从 从ノリ
. ∀t△ ∧fリ/
゙マじへ、 /リiУ
\夊id、_ ,.イ!刋/
`マ才i「≧ェ。。.。。っ夭テ少'゚
`゚'' ミ芝玉竺壬云=‐'´
 ̄ ̄
110デフォルトの名無しさん
2009/08/03(月) 22:46:35 一応BFとして動くな
111デフォルトの名無しさん
2009/08/03(月) 23:31:46 [と]の個数があってればなんでも一応動くだろ
112デフォルトの名無しさん
2009/08/03(月) 23:52:00 個数が合っててもネスト構造がおかしかったら処理系によっては動かないだろ
113デフォルトの名無しさん
2009/08/04(火) 00:49:19 あー言い間違えた。そうそうそういうことが言いたかった
114デフォルトの名無しさん
2009/08/04(火) 16:49:05 というかム板じゃない他スレにも貼ってあったから無視したが
これはコードだったのか
これはコードだったのか
115デフォルトの名無しさん
2009/08/04(火) 17:49:22 BFコードとして解釈できないレスの方が珍しい
116デフォルトの名無しさん
2009/08/04(火) 19:41:55 処理系によっては動くおかしなネスト構造ってどういうやつ?
117デフォルトの名無しさん
2009/08/04(火) 21:46:45 [ ] ] [ [ ]
とかじゃね
処理系によっては過剰の ] をプログラムの終了と解釈するとかもあるので
そのような処理系の場合は正常に終了する
とかじゃね
処理系によっては過剰の ] をプログラムの終了と解釈するとかもあるので
そのような処理系の場合は正常に終了する
118デフォルトの名無しさん
2009/08/04(火) 21:47:47 ん、ちょっと言い間違えた
終了するかはともかく、正常に実行される
終了するかはともかく、正常に実行される
119デフォルトの名無しさん
2009/08/18(火) 21:46:42 BrainFuckでライブラリを書けば、どんな言語、どんな環境にも極めて簡単にポーティング可能!
BrainFuckライブラリを充実させることこそ我々の急務ではないだろうか!
BrainFuckライブラリを充実させることこそ我々の急務ではないだろうか!
120デフォルトの名無しさん
2009/08/18(火) 23:36:08 再入可能どころか再配置可能も怪しいぞ
121デフォルトの名無しさん
2009/08/20(木) 06:23:46122デフォルトの名無しさん
2009/08/25(火) 18:52:06 >>120
相対位置でできれば良いんじゃない?
相対位置でできれば良いんじゃない?
123デフォルトの名無しさん
2009/08/25(火) 23:08:59 まずは再入、再配置のライブラリを書いてみようか?
124デフォルトの名無しさん
2009/08/26(水) 02:46:50125デフォルトの名無しさん
2009/08/26(水) 11:09:01 中間言語→BFにコンパイルするコンパイラを作ればいいんじゃね
逆ポーランド記法な言語からのコンパイラならなんとかできるかな
逆ポーランド記法な言語からのコンパイラならなんとかできるかな
126デフォルトの名無しさん
2009/08/26(水) 11:30:45127デフォルトの名無しさん
2009/08/26(水) 22:42:52 どうせ有限なんだから時間さえあればいける
128デフォルトの名無しさん
2009/08/26(水) 23:31:10 ついでにBrainFuckを逆アセンブル?してCソースにするコンパイラもよろしく。
129デフォルトの名無しさん
2009/08/26(水) 23:43:45 それは最適化しなくていいなら簡単
130デフォルトの名無しさん
2009/08/27(木) 00:02:29 もちろん可能な限り元のコードの意味を推測して、それらしいコードを復元してほしい。
131デフォルトの名無しさん
2009/08/27(木) 00:22:41 今JSでそういうの書いてる
132デフォルトの名無しさん
2009/08/27(木) 17:47:54 期待
133デフォルトの名無しさん
2009/08/27(木) 19:07:31 がんばってくれ
134デフォルトの名無しさん
2009/08/27(木) 23:43:54 前スレより
http://www.clifford.at/bfcpu/bfcomp.html
A compiler for a c-like high-level language which generates brainf*ck code
http://www.clifford.at/bfcpu/bfcomp.html
A compiler for a c-like high-level language which generates brainf*ck code
135デフォルトの名無しさん
2009/08/29(土) 21:39:59 まだか?
2009/08/30(日) 08:20:26
>>128
guy shirts
guy shirts
137デフォルトの名無しさん
2009/08/31(月) 23:10:26 >134
linuxか・・・
linuxか・・・
138デフォルトの名無しさん
2009/09/01(火) 23:56:37 BrainFuckでビジービーバーゲームをやるのも面白いかもしれない。
http://ja.wikipedia.org/wiki/%E3%83%93%E3%82%B8%E3%83%BC%E3%83%93%E3%83%BC%E3%83%90%E3%83%BC
ここでやるのはスレチかな?
http://ja.wikipedia.org/wiki/%E3%83%93%E3%82%B8%E3%83%BC%E3%83%93%E3%83%BC%E3%83%90%E3%83%BC
ここでやるのはスレチかな?
139デフォルトの名無しさん
2009/09/02(水) 07:09:25140デフォルトの名無しさん
2009/09/02(水) 07:31:28 >>139
それはチューリングマシンの説明で、ビジービーバーゲームとは違う。ビジービーバーの要点は
>停止するまでにテープに 1 を最も多く出力するような n-状態チューリングマシンを見つけ出そう、というゲーム
だよ。
それはチューリングマシンの説明で、ビジービーバーゲームとは違う。ビジービーバーの要点は
>停止するまでにテープに 1 を最も多く出力するような n-状態チューリングマシンを見つけ出そう、というゲーム
だよ。
141デフォルトの名無しさん
2009/09/02(水) 07:43:26142デフォルトの名無しさん
2009/09/02(水) 07:56:56 ビジービーバーゲームの説明はそれでおk。
普通はチューリングマシンでやるところをBrainFuckでやってみようと。
普通はチューリングマシンでやるところをBrainFuckでやってみようと。
143デフォルトの名無しさん
2009/09/02(水) 08:03:58 まず遷移関数をどうやって
BFプログラムに変換するかが問題だな
BFプログラムに変換するかが問題だな
144デフォルトの名無しさん
2009/09/02(水) 17:55:03 状態数は、BFでいえばコードのバイト数と似たようなもんだよ。
だから、
同じバイト数のBFコードで、
より大きな10進数を標準出力に生成する
こんな競技になる。
だから、
同じバイト数のBFコードで、
より大きな10進数を標準出力に生成する
こんな競技になる。
145デフォルトの名無しさん
2009/09/02(水) 18:01:24 +[.]
じゃあかんの
じゃあかんの
146デフォルトの名無しさん
2009/09/02(水) 18:24:18147デフォルトの名無しさん
2009/09/02(水) 19:06:13 つまんないけど最強だろ
148デフォルトの名無しさん
2009/09/02(水) 19:10:37 ビジービーバーゲームでのプログラムは停止しなきゃいけないんだ。
じゃなきゃ比較なんて出来ないからな。
じゃなきゃ比較なんて出来ないからな。
149デフォルトの名無しさん
2009/09/02(水) 20:00:00 じゃこれ
[>+.]
ポインタがオーバーフローすれば止まる
[>+.]
ポインタがオーバーフローすれば止まる
150デフォルトの名無しさん
2009/09/02(水) 20:03:58151デフォルトの名無しさん
2009/09/02(水) 20:52:53152デフォルトの名無しさん
2009/09/02(水) 21:58:45 後出しルールうざい
153デフォルトの名無しさん
2009/09/02(水) 22:41:24 後出しルールって言うか>>138のリンク先に全部書いてあるのに読んでないのが悪いんだと思うんだが
154デフォルトの名無しさん
2009/09/02(水) 22:51:29 てか、一般的なBFの話をするなら無限長のテープじゃないとダメだろ
実装ではしょうがないかもしれないけどさ
実装ではしょうがないかもしれないけどさ
155デフォルトの名無しさん
2009/09/02(水) 22:56:09 テープの長さが有限だとチューリング完全にならない
156デフォルトの名無しさん
2009/09/02(水) 23:28:56 そうそう、実際の処理系じゃなくて理想の処理系で動かさないと。
157デフォルトの名無しさん
2009/09/02(水) 23:37:01 なあ、詳しい人教えてくれ。
ある100状態のチューリングマシンがあって、
そのチューリングマシンがΣ(100)ステップ後に停止したとする。
このチューリングマシンがΣ(100)ステップ後に停止することを証明しようとしたら、
その証明は少なくともΣ(100)文字程度のオーダーの長さになる。
これは正しい?
ある100状態のチューリングマシンがあって、
そのチューリングマシンがΣ(100)ステップ後に停止したとする。
このチューリングマシンがΣ(100)ステップ後に停止することを証明しようとしたら、
その証明は少なくともΣ(100)文字程度のオーダーの長さになる。
これは正しい?
158デフォルトの名無しさん
2009/09/03(木) 03:57:09159デフォルトの名無しさん
2009/09/04(金) 22:47:53 ほ
160デフォルトの名無しさん
2009/09/06(日) 18:28:26 ho
161デフォルトの名無しさん
2009/09/08(火) 00:22:48 h
162デフォルトの名無しさん
2009/09/10(木) 07:01:39 ho
163デフォルトの名無しさん
2009/09/10(木) 15:59:52 ++++++[>++++++<-]>[>+>+<<-]>--->>++++
+++++[<+++++++++>-]<--------------.++
+++++++++.---.+++++.---------------.++
++++++++++++.--.++++.----------------.
++++++++++++++++<.>
+++++[<+++++++++>-]<--------------.++
+++++++++.---.+++++.---------------.++
++++++++++++.--.++++.----------------.
++++++++++++++++<.>
164デフォルトの名無しさん
2009/09/10(木) 19:50:09 >>163
グロ注意
グロ注意
165デフォルトの名無しさん
2009/09/15(火) 22:01:45 ほ
166デフォルトの名無しさん
2009/09/18(金) 23:51:37 +[ほ+]
167デフォルトの名無しさん
2009/09/21(月) 19:44:06 ho
168デフォルトの名無しさん
2009/09/22(火) 07:00:44 俺的にBrainFuckの文法に最小限の拡張を加えて最大限パワーアップさせるには
どうしたらいいか考えてみた結果次のようになった。
まず、メモリはテープではなく無限の高さを持つ2分木のようなものを想定。
L ポインタを2分木メモリの左の子へ移動
R ポインタを2分木メモリの右の子へ移動
U ポインタを2分木メモリの親へ移動
+ BFと同様
- BFと同様
. BFと同様
, BFと同様
[ BFと同様
] BFと同様
まあ、大体BFでlispのconsセルが使えるようなイメージ。
どうしたらいいか考えてみた結果次のようになった。
まず、メモリはテープではなく無限の高さを持つ2分木のようなものを想定。
L ポインタを2分木メモリの左の子へ移動
R ポインタを2分木メモリの右の子へ移動
U ポインタを2分木メモリの親へ移動
+ BFと同様
- BFと同様
. BFと同様
, BFと同様
[ BFと同様
] BFと同様
まあ、大体BFでlispのconsセルが使えるようなイメージ。
169デフォルトの名無しさん
2009/09/22(火) 14:13:50 そんなもん普通のBFの範囲でできるがな
170デフォルトの名無しさん
2009/09/22(火) 14:17:53 BFはチューリング完全だから
変わらないぞ
変わらないぞ
171デフォルトの名無しさん
2009/09/22(火) 16:31:49 この拡張でコードが劇的に短くなる例が欲しいな
172デフォルトの名無しさん
2009/09/22(火) 17:20:27 んで、最終的にアセンブリやCになる・・・と
拡張=BFの死なんだよな
過去ログの通り、拡張行為すればするほどBFの簡潔さが失われていき
別にBFを使う理由がなくなる
拡張=BFの死なんだよな
過去ログの通り、拡張行為すればするほどBFの簡潔さが失われていき
別にBFを使う理由がなくなる
173デフォルトの名無しさん
2009/09/22(火) 18:50:58 うだうだ言ってないでインタプリタとコンパイラかけ
500バイト以内で書けたら合格にしてやる
500バイト以内で書けたら合格にしてやる
174デフォルトの名無しさん
2009/09/22(火) 20:51:37 既出じゃね?
175168
2009/09/22(火) 22:56:17 んが。既出なのか。ま、既出でも全然不思議ではないけど。
一応このスレの中はチェックしたつもりだったけど
前スレはチェックしてないんだよね。
>>168のプログラム言語をBTBF(BinaryTree BrainFuck)と呼ぶとして、
BTBFのコードをBFのコードに変換するトランスレータを実装しろってのは
学生向け演習問題として良問じゃね?
一応このスレの中はチェックしたつもりだったけど
前スレはチェックしてないんだよね。
>>168のプログラム言語をBTBF(BinaryTree BrainFuck)と呼ぶとして、
BTBFのコードをBFのコードに変換するトランスレータを実装しろってのは
学生向け演習問題として良問じゃね?
176デフォルトの名無しさん
2009/09/22(火) 22:59:16 >175
まだ出てなかったぞ
まだ出てなかったぞ
177デフォルトの名無しさん
2009/09/22(火) 23:06:44 コード短くする役に立つとすればこんなのかなぁ
まあいらないけど
x 直前のコマンドを*p回繰り返す
* p=*p
& *p=p
c 最も近い前方の[にジャンプ
b 最も近い後方の]にジャンプ
まあいらないけど
x 直前のコマンドを*p回繰り返す
* p=*p
& *p=p
c 最も近い前方の[にジャンプ
b 最も近い後方の]にジャンプ
178168
2009/09/22(火) 23:42:17 >>172
俺は拡張=BFの死とは思ってないんだよね。
シンプルさがBFの価値なのは同意だけど、
もっともシンプルなチューリング完全言語BFと
Cやlispといった高級言語の生産性の溝がどれだけあるかってのを
把握できるのもBFの存在価値だと思う。
だから「BF+α=lisp」のαの部分がどれだけあるのか、俺は興味があるです。
#どっちもチューリング完全だから等価って乱暴な議論はなしね。
俺は拡張=BFの死とは思ってないんだよね。
シンプルさがBFの価値なのは同意だけど、
もっともシンプルなチューリング完全言語BFと
Cやlispといった高級言語の生産性の溝がどれだけあるかってのを
把握できるのもBFの存在価値だと思う。
だから「BF+α=lisp」のαの部分がどれだけあるのか、俺は興味があるです。
#どっちもチューリング完全だから等価って乱暴な議論はなしね。
179デフォルトの名無しさん
2009/09/23(水) 00:05:02 純lispはBFと同じくらいシンプルだけど考え方が全然違うから
そんな+α的な物はない
そんな+α的な物はない
180168
2009/09/23(水) 00:08:29 ないわけはない。
チューリング完全的に考えて。
極端な話、理屈の上ではBFでlispインタプリタは書けることになっている。
それがどれくらい大変か?と言う問題はある。
lispでBFインタプリタを書くのは簡単だけど、
BFでlispインタプリタを書くのはきつそう。
チューリング完全的に考えて。
極端な話、理屈の上ではBFでlispインタプリタは書けることになっている。
それがどれくらい大変か?と言う問題はある。
lispでBFインタプリタを書くのは簡単だけど、
BFでlispインタプリタを書くのはきつそう。
181デフォルトの名無しさん
2009/09/23(水) 00:17:40 lispからbfに変換するプログラムは作れるんじゃないか?
182デフォルトの名無しさん
2009/09/23(水) 03:42:27 LISPでBFのインタプリタが簡単ねえ
真面目にシンボルをASCIIのチャーチ数表現で取り扱えば同じかそれ以上に大変だと思うけどな
真面目にシンボルをASCIIのチャーチ数表現で取り扱えば同じかそれ以上に大変だと思うけどな
183デフォルトの名無しさん
2009/09/23(水) 08:18:23 pure LISPだとBFよりもプログラム書くの難易度高いだろJK
184168
2009/09/23(水) 08:33:05 よくみたら純lispって書いてあるな。
てっきりclispのつもりで話してた。
てっきりclispのつもりで話してた。
185デフォルトの名無しさん
2009/09/23(水) 09:12:38 >>168
便利かどうか試しに実装してみようと思ったら疑問がいくつか。
・2分木メモリは値を持つの?持たないとしたらポインタがconsを指しているとき
入出力命令は何をすべき?
・+-で指すリニアなメモリとLRUで指す2分木メモリの空間はまったく別のもの?
ていうか+-廃止すべき?
自分的にはノーアイデアなんだけど、BFくらい最小のLispができそうですごく面白そうだとは思う。
便利かどうか試しに実装してみようと思ったら疑問がいくつか。
・2分木メモリは値を持つの?持たないとしたらポインタがconsを指しているとき
入出力命令は何をすべき?
・+-で指すリニアなメモリとLRUで指す2分木メモリの空間はまったく別のもの?
ていうか+-廃止すべき?
自分的にはノーアイデアなんだけど、BFくらい最小のLispができそうですごく面白そうだとは思う。
186168
2009/09/23(水) 10:30:02 メモリは値を持ちます。
後は通常のBFと同じ。
後は通常のBFと同じ。
187デフォルトの名無しさん
2009/09/23(水) 10:47:01 まずはhello worldから始めろ
プログラミング言語として使えないなら机上の空論
プログラミング言語として使えないなら机上の空論
188デフォルトの名無しさん
2009/09/23(水) 10:49:15 この板ではチューリング完全という言葉がたまに登場するが、
もちろん、このスレで使ってる人たちも、意味とか前提とか
分かって使ってるよね?
もちろん、このスレで使ってる人たちも、意味とか前提とか
分かって使ってるよね?
189185
2009/09/23(水) 12:19:47 あ、<>と+-を勘違いしてた。<>の代わりにLRUということか。
190デフォルトの名無しさん
2009/09/23(水) 16:29:57 >>188
説明して
説明して
191デフォルトの名無しさん
2009/09/23(水) 16:43:51 入出力が便利になれば使い道はあると思うとかは考える
でも、それじゃ駄目なんだよな
BFとは別物として考えなきゃいけなくなる
でも、それじゃ駄目なんだよな
BFとは別物として考えなきゃいけなくなる
■ このスレッドは過去ログ倉庫に格納されています
