BrainFuck Part.2 <[+-.,]>
BrainFuckとは
難解プログラミング言語の一つ。
オシシメサイトは
http://www.google.co.jp/ 以下俺的見解
・スレッドタイトルに全命令が入る素敵な言語。
・1レス内に全命令のリファレンスが入る素敵な言語。
> ポインタをインクリメント
< ポインタをデクリメント
+ ポインタが示すメモリ位置のデータをインクリメント
+ ポインタが示すメモリ位置のデータをデクリメント
. ポインタが示すメモリ位置のデータを出力
, ポインタが示すメモリ位置のデータに入力
[ ポインタが示すメモリ位置のデータがヌルなら対応する]までジャンプ
] ポインタが示すメモリ位置のデータがヌルじゃないなら対応する[までジャンプ
前スレ: BrainFuck <[+-.,]>
http://pc11.2ch.net/test/read.cgi/tech/1036013915/
Brainfuck(ブレインファック)はプログラミング言語の一つ。 名称が良いものではないため、Brainf*ckと呼称するのが一般的。 開発者Urban Müllerがコンパイラがなるべく小さくなる言語として考案した。 実際、Müllerが開発したコンパイラのサイズは123バイト(キロバイトではない!)、インタプリタは98バイトとなっている。 処理系には十分なサイズのbyte型配列とその要素のひとつを指すポインタがある。 ポインタを「>」「<」命令で移動させながら、そのポインタが指す値を増減させて処理を進めていく(Hello world参照)。 実用性はほとんど無いように思われるが、これだけでチューリングマシンで実行可能なあらゆるプログラムが記述できる(チューリング完全である)とされている。
3 :
デフォルトの名無しさん :2007/05/01(火) 12:20:08
で、これで作られたアプリとかあるわけ?
>>++++[<++++[<++++>-]>-]<<--..>>+++[<++++[<->-]>-]<<-.>>++[<++++[<++++>-]>-]<<--.+++++.+. ていうかリファレンスの + が重複してるとこ直しとけよハゲ
>>1 乙です。
しかしこのスレで何をしろと言うのだ?
BrainFuck電卓とか作れそう
(゚听)イラネ ごめん。
BrainfuckのIDEを作るとしたらどんなかんじになるかな? どんな機能があればいいかな?
* ブレークポイント * メモリダンプ * ステップ実行 あたりは確実に欲しい
++++++++[>++++++++<-]>--..-------------.<+++++[>++++++<-]>.+++++.+.
IDEイラネ # コメント "コメントをstderrに出力" * # メモリとポインタをリセット ? # メモリをダンプ @ # 一命令を実行するごとにメモリをダンプのトグル
>>12 >>14 なるほど、参考にします。
用はデバッグ系システム命令追加とメモリの可視化ですね。
*メモリエディタ
で、これで作られたアプリとかあるわけ?
効率悪すぎるって
>18-19 そもそも効率を求めて作られた言語じゃないからな。 効率とか、アプリ作りたいとかなら別の言語行ったほうが。 これはパズルを楽しむ言語なのだよ。
まだだ、BrainfuckCPUとその専用コンパイラ、 Brainfuckベースで思考する新たな人類が誕生すれば 効率についてはまだわからん。
BrainfuckでCコンパイラ作った方が早い。
てかこれの用途って計算だけ?
もちろんです。 電計機は計算しかしません。
25 :
デフォルトの名無しさん :2007/05/02(水) 12:50:40
ファック
用途は計算っつーか、電子計算機そのものの研究じゃね
BrainfuckのためだけのOSを作ろうと思います。
計算理論・言語理論ではチューリングマシンは現役ですよね。 BFのほうが簡潔で美しいと思うのですが…
さすがに暗号的過ぎるがなw
直前のコマンドを回数分繰り返すコマンド1, 2, 3, 4, 5, 6, 7, 8, 9とかどうだろう・・
たとえば
>>13 なんかは
+7[>+7<-]>-1..-66.<+4[>+5<-]>.+4.+.
で、可読性がかなり上がりつつ、1byte = 1commandの純粋性を失わない
31 :
デフォルトの名無しさん :2007/05/02(水) 18:40:22
>>30 それは考えたことあるけど、
数字が入ってくると美しくないな
まあ、文字出力に+が8個以上は続いたりするからな
34 :
30 :2007/05/02(水) 19:07:06
+8で+が8回だったら汚いと思うけど、+8で+が9回ならそれなりにシンプルさを保てるような・・・ たとえば64を作りたい場合も、+88888887とかなので、brainfuck感を失ってない気がするし・・・
>>34 この言語の仕様の美しさを君はまだ分かっていないようだな。
そうやって利便性ばかりを追求する君は間違いなくゆとり。
>>29 が暗号的だとか言うので、ちょっと改良案を考えてみたくなった・・・
前スレで次スレ案を+++++++[>+++++++<-]>+.と提案したときも、異端的すぎるとか言われたし・・・
みんな、+の数数えるの嫌いなのかなと、・・・(でも、案外そうでもないのかな・・・
そういうのはエディタで対処すりゃいいんじゃないの。 入力の短縮とカーソル位置の連続するキャラクタの個数を表示するとかさ。
単純にスレタイが長すぎるのはやめてほしい
その次元での美しさのことを言い出したら[と]も美しくない。
>>37 その案はずっと俺が考えてたやつだ。
>>39 []は制御文としていろいろ応用が利くから必要だとおもうぜ?
+がインクリメントというのは直感的すぎないか
+ → メモリビットマップに1を書き込むとか止めてくれよ?
なにを今更
>>35 利便性を求めるのはプログラマとして当然なんじゃないの?
Brainfuckにそれを求めるのは間違ってると思うが。
>>45 ごめんね、言い方が間違ってたね。
Brainfuckに利便性を求めると、ネタ言語的に
面白くなくなるということを言いたかったんだ。
ネタじゃないよ。 ミュラーに謝れ!
ネタをネタと見抜けないやつはBrainF(ry ところで、いつごろ考案されたものなんだろう? 実装は99年のものが存在することを確認したが
俺の汁限り最古の記録ではメソポタミア文明の 洞窟の壁画に<[+-.]>が刻まれていたというのが最古の記録だな。 それ以前は申し訳ないが把握していない。
>>49 東南アジアの旧石器時代の遺跡から出土した動物の骨に
<[+-.]>やら骨上デバッグの跡やらが伺えると聞いた
BrainFuckを理解するCPUと、 コンパイル時にBrainFuckに落とし込む高級言語が開発された夢を見た!
二重でBF >++++++++[<++++++++>-]<--.-------------------...... ....>++++++[<++++++++>-]<.------------------------- ------.-----------------..........+++++++++++++++++ ++.-----------------.>++++++[<++++++++>-]<.-------- -------------------------.-----------------........ ........+++.-...............+.---..............+++. ---.+++.
54 :
17 :2007/05/06(日) 15:35:16
55 :
デフォルトの名無しさん :2007/05/06(日) 16:05:05
>>53 >+++++++++[<++++++++++>-]>++++++++[<++++++++>-]>++
++++[<+++++++>-]<+>>++++[<+++++>-]<[<.>-]<<<+.>--.
>......<.>.....<--..>++.<<++.>++.>....+.<.>---.+++
.<--.>-.+.---.+++.
短くしてみた。
57 :
53 :2007/05/06(日) 17:26:34
Brainfuck Developer使ってるが、 デバッガも、コメント機能も付いてるよ。
BF の難読化を行うツールがあったら大変なことになりそうな気がする
60 :
54 :2007/05/06(日) 19:24:46
>>58 全然知らんかった。
かなり充実してるし、こっち使ったほうがいいな。
まあ、自分で実装してみたかったっていう自己満足的なものもあったから別にいいんだけど。
とりあえずもうちょっと使いやすくしておきたい。
61 :
55 :2007/05/06(日) 20:44:20
http://pbfi.stricter.org/ こんな物を作ってみましたよ。
皆が何度も使うとサーバに負荷が掛かるので誰か同じものを設置してください。(ソースコード公開中)
あと、MIMEタイプをapplication/xhtml+xmlにしているのでIEでは見えません。OperaかFxを使ってください。
Cでなんかのツール作ろうとしてたが、 他の人がどんどん作ってるのみて、やるき失くした。。。orz
65 :
55 :2007/05/07(月) 14:15:20
>>62 有難う。
Rubyで実装し直した物のように見えるけど、C言語でCGIが組めるサーバって少ないんだろうか。
XREA.COMとかは一応使えるみたいだけど。
>>63 CSSが綺麗だとか言われたのは初めて。結構良いのかな?
-----
今日Brainfuckのソースの最適化について考えていて、或る事に気が付いた。
例えば、+と-と,はポインタの指す場所の値を変更すると云う性質を持っていて、
+と-は現在の値に対する相対的な変更であり、,は現在の値を無視する絶対的な変更である。
また、[と]と.は現在のポインタの指す場所の値を利用すると云う性質を持っている。
この事を考えると、[か]か.が実行された後、,が実行されるまでにある+と-は無駄と云う事が分かる。
(まあこの説明では>と<を無視しているけど、少し複雑になるだけで基本は変わらない。
サブセットでいいから既存言語からのトランスレータないかなぁ。試してみるにしても手間が掛かって……
C+bf+ int main(){ >>++++[<++++[<++++>-]>-] <<--..>>+++[<++++[<->-]>- ]<<-.>>++[<++++[<++++>-]> -]<<--.+++++.+. >input(); } input(){ }
68 :
67 :2007/05/07(月) 18:35:03
ごめん 送るつもりなかったのに、送ってしまった。 気にしないで。
javascriptでちょいちょいとインタプリタ作ったけどあんまり使い道ないのね orz #site持ってないってのもあるけど
71 :
55 :2007/05/09(水) 04:18:43
72 :
54 :2007/05/10(木) 04:54:19
>>72 ++[>++[>++>++<<-]<-]
を食わせてみたら本来 00 00 08 08 となるべきところ
Error: out of memoryとなった
[]の対応がおかしくなってるみたいだな。
77 :
75 :2007/05/11(金) 18:43:26
bfcコンパイラ作ろうと思ってたのだがもうあるのかよ・・・ 今は超簡易OSを作ろうとしているのだがそっちもありそうな気がしてきた
最適化コンパイラってある?
80 :
54 :2007/05/11(金) 23:23:42
82 :
78 :2007/05/11(金) 23:36:05
>>79 上位プログラムからのコンパイラの仕様を必死に考えていたのだが
>>52 が考えていたコンパイラと殆ど同じだった
そういえば、BFってメモリを1ビットにしてもチューリング完全なんだな・・・
ちょっと考えてみたら簡単に8bit版へのトランスレータが出来た
机上デバッグしかしてないからもしかしたらバグがあるかも。
8ビット版BFのソースをこの規則で変換すれば1ビットBFで動く筈
>→> > > > > > > > >
<→<<<<<<<<<
+→>[>[>[>[>[>[>[>[>+<]<+]<+]<+]<+]<+]<+]<+]+<
-→>+[>+[>+[>+[>+[>+[>+[>+[>+<]<]<]<]<]<]<]<]<
[→+[>[<+][> >[<<+][> > >[<<<+][> > > >[<<<<+][> > > > >[<<<<<+
[> > > > > >[<<<<<<+][> > > > > > >[<<<<<<<+][> > > > > > > >[<<<<<<<<+]+[+
]→]
.→> > > > > > > >.<.<.<.<.<.<.<.<
,→>>>>>>>>,<,<,<,<,<,<,<,<
83 :
78 :2007/05/12(土) 00:21:11
ループにミスがあったんで修正。 両側に判定文を入れてもいいけど長くなるので判定文の前に戻るようにしてみた [→+[[>[<+][> >[<<+][> > >[<<<+][> > > >[<<<<+][> > > > >[<<<<<+ [> > > > > >[<<<<<<+][> > > > > > >[<<<<<<<+][> > > > > > > >[<<<<<<<<+]+[+ ]→]+]
BrainFuck64とか出ないよな?
寝言はBFで32bitのメモリ空間をfuckし尽くしてから言えw
+[>+] ありがち
1秒間に10回レイプ発言だーーーーーー!!
何の話だ
,[>,] なんてのも、ありがちだぜ?
ランレングス圧縮機能つきバッファを用意すれば数バイトで収まるな
>>90 まず圧縮機能付きバッファをBFで定義じゃ
BFでファイルにアクセスしたいけどメモリマップトI/Oみたいにするべきかな?
>>93 逆に聞くがどうやってNULL入力するんだ?
リダイレクトやパイプ、端末によっちゃ専用の入力方法があるかもしれない。
それは考えてなかった
97 :
55 :2007/05/12(土) 16:24:53
>>94 私が作ったインタプリタだと入出力を数字とかに切り替えられる。
0って入力すれば普通に出来るな。
そもそも、普通の端末エミュレータならCtrl+@で入力できないか? 専用端末にはNULキーがあるのもあるし。
Windows系は全滅だな。
^zは何のコードだっけ?
dosの時代にはコード入力モードがあったんだけど…… #どうやるのか忘れたよw
SUB
103 :
94 :2007/05/12(土) 20:52:07
Ctrl+@は初めて知った・・・・・・・・
英語キーボードだとCtrl+[なんだけど、 日本語キーボードだと[の位置に@があるからな
>>104 いいえ。Ctrl+@は英語キーボード上ではCtrlキー+2キーとなります。
何故そうなっているかはasciiコード表を見れば直ぐに判る通り、
コントロールコードはそれに0x40足した文字で呼称されるからです。
つまり、NUL(0x00)+0x40='@'ということです。
ちなみにCtrl+[と言えば逆に、'['-0x40=0x1bとなってEscのことです。
106 :
78 :2007/05/13(日) 00:14:28
; *ptr番目のファイルを読み込みモードで開く。0なら標準入力。 , 読み込みモードでファイルが開かれていたらそのファイルから1バイト読み込む。開かれていなければ純BFの,と同じ : *ptr番目のファイルを追記モードで開く。0なら標準出力。 . 書き込みモードでファイルが開かれていたら略 ' 読み込みバッファが標準入力の時、入力があるとき1、無いとき0を*ptrに格納 ~ *ptr番目のファイルを削除する 今書いてる処理系ではこの仕様でファイルの入出力を実装している。 変に高機能にするとBFらしくなくなる気がしたから可能な限りシンプルにしてみた ファンクションキーやカーソルキーがややこしいのでNULLなど入力は基本的に不可、 出力は文字と改行、BS、DEL以外は無視してる
ファイルの入出力などリダイレクトで十分です
言語の拡張よりVMの拡張のほうがよくね? 割り込みベクタテーブルとか割り当ててAPI実装する方がバカらしくてかっこいいと思う。
割り込みの概念入れられるのか? 入らないような気がするんだが。
マルチスレッドとか。
お前ら環境整備ばっかしてないでコード書けw
オセロ作って
>>111 えー、だって環境整備の方が簡単なんだもん(w
いやマジでネタ探しも含めて難しいよこれ、
つまんないテキスト表示するだけでもしんどいけど楽しいモニョモニョとした感じがなんとも。
114 :
78 :2007/05/13(日) 15:21:57
>>111 +
[
[-]>[-]+++++++[-<+++++++++>]<-. #output arrow mark
>>+ # set null for left and memset 1
[ # ecoh start
, # read
>[-]>[-]>[-]>[-]<<<<[->+>+<<] # copy data
>[-<+>]
+>-------- # check BS
<[->[<<.>]]>[>]<< #echo
+>[<-]>[>]<<
[ # if BS then
-<[-] # delete BS
<[>+<[-]]>[+++++++.[-]<] #delete last char
]
>-- # if Enter then end loop
[<+>-]< # copy memory
] # while(memory != space)
<<[<]> # set pointer for first address of string
[.>] # print string
<[<]< # reset pointer
]
OS作ろうとして書いてみたecho。
echo無しで1文字ずつ入力を受け付ける環境で、BSとEnterを正しく処理できる
後は# print string、# reset pointerの部分でプログラムのロードをすれば
OSとして機能し始めるのだが・・・
., で入出力される文字列の規格作ろうよ。Xプロトコルみたいな奴を。
ファイル入出力は欲しいなマジで。
誰かBFでFizzBuzz書いて
除算がなにげにめどいぞ
余を求めるのに除算、乗算、比較が必要じゃないか?
3,5の減算カウンタ2つ持てばいいのじゃなかろうか?
121 :
54 :2007/05/16(水) 00:39:39
122 :
54 :2007/05/16(水) 00:42:34
# A + B = C (加算) [> > +>+<<<-]> > >[<<<+> > >-]<<[>+>+<<-]> > [<<+> > -]< # A += B (加算) >[<+> > +<-]>[<+>-]<< # A - B = C (減算) [> > +>+<<<-]> > >[<<<+> > >-]<<[>->+<<-]> > [<<+> > -]< # A -= B (減算) >[<-> > +<-]>[<+>-]<< # A * B = C (乗算) >[> > >+>+<<<<-]> > > > [<<<<+> > > > -]<[<<<<[> > +>+<<<-]> > >[<<<+> > >-]>-]<< # A *= B (乗算) [> > +<<-]>[> > +>+<<<-]> > >[<<<+> > >-]<[<[<<+> > > > +<<-]> > [<<+> > -]<-]<[-]<< # A / B = C ... D (除算) [> > >+>+<<<<-]> > > > [<<<<+> > > > -]> > +[<<<<<[-> > ->+<[[> > +<<- ]> > >+<<<]> > [<<+> >-]>-<<<<<]>+> > [<<<+> > >-]> > ]<<<[<->[> > +<<+ ]> > >+<<<]> > >[<<<<<[> > +>+<<<-]> > >[<<<+> > >-]>[<<-> > -]>-]<<<<
どこを破壊するとかも書いておいてくれるとうれしいな。
124 :
◆DgG2t5Gtqk :2007/05/16(水) 17:49:01
125 :
54 :2007/05/16(水) 18:25:22
>>123 >>122 のこと言ってるの?
A += BとA -= BとA *= B以外は破壊無し。
↑の3つは結果をAに入れてるからAを破壊してることになる。
>>124 前スレでもやってたけど>>の間にスペースいれると書き込める。
最近気づいたけど。
BFコンパイラのyacc/lexの実装キボンヌ
線形解析・・・必要なし 構文解析・・・必要なし それがBFクオリティー
CUIのBFキボン
?
130 :
128 :2007/05/16(水) 21:25:56
違った、GUIだ。
どこかにjavaアプレット版があったやうな。
Visual BF Builderマダー?
>>132 (´・ω・`)黙ってうpやがな。
ダメだよな。。。
できたー ++++++[->++++> >+>+>-<<<<<]>[<++++> >+++>++++> >+++>+ ++++>+++++> > > > > >++> >++<<<<<<<<<<<<<<-]<++++>+++ >-->+++>-> >--->++> > >+++++[->++>++<<]<<<<<<<<<<[->- [> > > > > > >]>[<+++>.>.> > > >..> > >+<]<<<<<-[> > > >]>[<+ ++++>.>.>..> > >+<]> > > >+<-[<<<]<[[-<<+> >]> > >+>+<<<<< <[-> >+>+>-<<<<]<]>>[[-]<]>[> > >[>.<<.<<<]<[.<<<<]>]>.<<<< <<<<<<<]
Whitespaceに負けるとはなにごとだ、と思ったが 調べてみたらWhitespaceには乗除に剰余まであるのか。
2命令8x8種類を64キャラクタに割り当てれば長さを1/2、可読性を1/4に低減できそうだなw
まあそういう意味じゃ単純にrunlength圧縮が一番まともな解決案だと思うんだが、 問題はまともすぎるってことなんだよな。
BFも十分にダントツ杉でつ
ランダム函数はやっぱり欲しいよな。
146 :
デフォルトの名無しさん :2007/05/22(火) 18:02:33
: … ポインタの指す値を元に擬似乱数を代入
特定の番地にノイズが入ってる処理系でも作ればいいじゃない。 言語仕様でどうにかする問題じゃないよ。
前スレに擬似乱数出力するコードがあったな
/dev/random みたいなもんか? しかし、それを読み出すにはどうすればいいんだろう。
>>147 おいおい、それじゃBfじゃ無くなっちゃうじゃないか。
と思ったけど、bfgolfでも初期値が0とは限らないのな。
Wikipediaとmuppetlabsでは "an array of 30000 bytes, initially all set to zero" だし、bfgolfの結果も全て初期値が0である事を前提としてるけど。
文法マスターしていい気になってる脱初心者はすぐ文法拡張したくなるから困ったもんだ。 そういった俗世の煩悩から開放されたとき真のBF道に一歩踏み入れたといえるだろう。
むしろ定年するまで他の言語で働いて その後にファックされるべき
>>152 チューリング完全なんだから、拡張なんて必要ない、ということか
ということはbrainfuckでbrainfuck処理系作れるのか?
既に沢山あるではないか・・・
普通にSample outputを表示してるだけだろ・・・
相変わらずbashが強いな
>>158 これは、アドレスの指すhtmlファイルを表示するプログラムではないのだろうか
>>161 sample inputに対してsample outputを返せば、そのほかはどうでもいい
>>160 そんなもんじゃないか?
短いのを考えるのはなかなか難しいぞ。
テキスト表示すら一苦労というのがBFクオリティ
BFのコードの最適化し始めると 配列の前後のゴミまで利用して手順の簡略化できちゃうから パズル的様相を呈して来るんだよな。
真髄はそこだったか
5982byteは手で作って無いだろ多分。 アスキーの差を取ってその分+ or -を連打して、.していく ようなBFソースを別の言語で自動生成してるだけだと思う。
そりゃそんなでかいの人が手で作ってるわけないがな・・・
変換プログラムがどれだけ短いコードを生成できるか競うってのも面白そうだな。
そういえばBFのインタラクティブ環境がまだなかったな
171 :
デフォルトの名無しさん :2007/05/27(日) 12:11:11
実用アプリ作ろうと思ったら、何が足りないんだ?
ファイル入出力はやっぱり必要だよな。
標準入出力だけでいいじゃない
0番地より前をHDDにマッピングすればいい。
176 :
デフォルトの名無しさん :2007/05/27(日) 17:36:04
>>175 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[-]<[-]<[-]<[-]<[-]
<[-]<[-]<[-]<[-]<[-]<[-]<[-]<[-]<[-]<[-]<[-]<[-]<[-]<[-]<[-]
Windowsプログラムを削除
[[-]<[-]+]
178 :
デフォルトの名無しさん :2007/05/27(日) 20:55:40
>++++++++++++[-<++++++++++++>]<-------.>+++++++[-<+++++++>]< +++.>++++++++[-<-------->]<+++++.>+++++++[-<+++++++>]<--.>++ +++++[-<------->]<++.>+++++++++[-<+++++++++>]<-------.>+++++ +++[-<-------->]<.>+++++++[-<+++++++>]<+.>+++++++[-<-------> ]<-.>++++++++++[-<++++++++++>]<------.>++++++++++[-<-------- -->]<----.>++++++++[-<++++++++>]<++++++.>++++++++[-<-------- >]<------.>++++++++++[-<++++++++++>]<-------.>++++++++++[-<- --------->]<+++++++.>++++++++[-<++++++++>]<++.>++++++++[-<-- ------>]<--.>++++++++++[-<++++++++++>]<+++.>++++++++++[-<--- ------->]<---.>+++++++++[-<+++++++++>]<-------...
180 :
デフォルトの名無しさん :2007/05/27(日) 22:14:53
22バイトが606バイトまで膨らむのか Shift_JISってやつはよく出来たBF圧縮アルゴリズムなんですなぁ
1byte目 >派 VS +派 カウンタを減らすとき [-<*****>]派 VS [<*****>-]派
>>183 ウェイト入れてるんじゃねーの。
一文字ずつ出てくるのを固唾を呑んで見守るというのもまた風情があってよいw
>>184 初めはいろんなのをマネしてて後者だったが、
今は断然前者だな。忘れない内にデクリメントしとこぅ、みたいな
187 :
122 :2007/05/29(火) 03:24:06
今さらだが
>>122 の除算書き直した
[> >+>+<<<-]> > >[<<<+> > >-]<<[> >+>+<<<-]> > >[<<<+> > >-]<<[->-> >-<<[[>+<-]>
>+<<]>[<+>-]>[<<<<[> >+>+<<<-]> > >[<<<+> > >-]> >+<+]<<<]>[>+<-]<<[>+>+<<-]>[<+
>-]> >[<->-]> >[<<<<+> > > >-]<<<<<<
*A B 0 0 0 0 0 (A=割られる数 B=割る数 *=ポインタ ABの後ろに5つの0が必要)
の状態で↑を実行したら
*A B C D (C=商 D=余り)
破壊は無し
>>186 カウンタ減らす場合だとデクリメントともう一つ
ポインタをカウンタに合わせておくことも必要
>>184 の例だと後ろにある>
カウンタにポインタを合わせてデクリメントって考えなので後者
golfはどこで遊べばいですか
>>189 ありがとう。しかし最後にコンテストが行われたのは2002年のようだ。
ネタも無いし、これ以上スレ伸びないね
無い無い言わんと自分で提供汁
>++<
198 :
デフォルトの名無しさん :2007/06/05(火) 21:28:41
ふつうに見たらAAだけど、BFコードとして食わせたら、 別にAAが出てくる〜的なの、誰かプリーズ
トライフォースを思い出した
つーか、BFコードのAA化って簡単じゃないの?、足りなかったら関係ない文字足せるし
<+.-> ところで、BFは不の値にも対応はしてるようだけど、 ポインタのアドレスって負の値はダメなの? つまり、いきなり最初に < を使うとエラー?
処理系によるとしか
バッファ二つ持たせりゃ簡単だろ。 いきなり-して255になることに依存してるコードもあったな。
チューリング完全なBFインタプリタは負方向のアドレスにも対応してるんだろうなぁ
正方向だけでも完全のはず
無限大のアドレスを扱えないと完全じゃないだろ。
実装≠言語
> + + + + + + + + + + [ > + > + + +>++++>+++++>++++++>+++++ + + + >+++++++++>+++++++ + + + > + + + + + + +++++>++++++++++ + + [ <]>-]> > >.> >> > + + ++.<<<--.> > > .< < < <+.>-.<<++.> > > .< < <.> >+++.-..> > > > ++ +.--.> >----.<<<< < <<<. >- .> > > > > > >.<<.>++ ++ +.>.<< < < < < < +.< < +++ .- --.> > >--.> > > > > >++++++++.<<<<<< <<.> > > > > > > >.<<<<<<<<<+++.---.>..> > > >----..
絵が描きたいなら、2次元でプログラム書く言語あったはずだから、 それ使えばいいんじゃね。
2次元で構造を要求されるから、逆に自分の書きたい絵は描きにくいと思う<befunge
いや、ループを書くときは本当にAAで輪を描く言語があったはず。 名前ど忘れしてもうたけど……。
gikobasicじゃねーのw あれAAじゃねーけど
大昔WindowsでマウスでANDとかORのソケットを組み合わせる 真のヴィジュアルプログラミングなんて謳ってた開発環境があったな・・・
視覚的プログラミングってのは意外と歴史がある
>>219 ウィンドウズのウの時も無い頃からあるからなぁ。
IronBrainfuck
226 :
デフォルトの名無しさん :2007/06/10(日) 14:39:01
++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++++ +++ ++ BFコードに違いはないんだぜ
あるコードを実行したら別のコードが出力されて、 そのコードを実行したら元のコードが出力される ようなことはできるかな?
>++++++++++[>++++>+++++>++++++>+++++++++[<]>-]>>>+ +.<<+++..........>>>+.<.<<....>>.<<.....>>.<<......>>.<<.........>>>.<--.>++. <++.<<++.>>>.<...<<--..>----.>--..<<...>..........>++...<<.>.>--.<.>.. <..........>++..<.>--..<...........>++..<.>--..<............>++...<.>--.<<++..>.>+ +.<<--..>.>--.<<..>.>..<<..>.>++...<.>--.<...>..<....>++.<<++....>.>.<< ..>..>--..<<..>.>++.<.>.<<--..>.>--..<.....>++.<.>.<.>--.<.>++.<<++.. >..>--..<<--..>...>++.<.>--.<<++..>....>++.<.
プロセス ID か乱数を使ってるから BF じゃ無理だよ
2chのトリップを解析するBFコード ↓
234 :
デフォルトの名無しさん :2007/06/13(水) 16:45:29
好きな文字列キーを入力して、それによって出るトリップの 文字列を瞬時に計算し、さらにそのトリップを出すための キーを計算して、出力してくれるプログラム >+[,>]<[<]>[.>]
>>234 それやるなら、
>+[>,]<[<]>>[.>]
だろ
電卓 >,>++++++[<---------->-]<-[>++++++[<++++++++++>-]<+>,>++++++[<---------->-]<-]>+ +++++[<++++++++++>-]<+[<]>[[>]> > >-> > >[>]+[<]<<[<<<<[<]>[[>]>+<<[<]>-]>[>]> > ++++++[<-------->-]+<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>[-]+++++++[< ++++++++>-]<+> > >[<+<<[<<[<]<+> >[>]>-]> > >+>-<]>[<->+]<<<<[-]]]]]]]]]]]>[> >> >[>]>+<<[<]<<<-]> > > >[>]>[-<<[<]<[+]-> >[>]++++++++++<-[> > >+<<<-]>[> >[<<<+> > > >+<-]>[<+>-]<<<-]> >[-]<[<<+> >-]<<+> >]<<[<]<<]->+<<<<<[<]<[>+<-]>[>]> > >[ <<<<[<]>[[>]>+<<[<]>-]>[>]> >++++++[<------->-]++<[>+<-[>+<--[>+<--[>[-]+<<+++[> ----<-]>--[>-++++++[<++++++++>-]<+[-]]]]]]>[>+<[> > > >[>]>+<<[<]<<<-]> > > >[>] >[<+>-]<-<[<]<<<]>]<<<<[<]>]> > > > > >[>]<[[[>+<-]<]> >[<+>-]>[>]<]<[<<]> > > >
[-[<+>+[>+<-]]>[<+>-]<<-[+<-[>+<-]> > > >-[<<<[<+> >+<-]>[<+>-]> >-]<<<[-]<+> >> > > >[[<<<<+> > > >-]> >]<<<<<<[<<]<]>----[<+>++++[>+<-]]>[<+>-]<<-[+<-[>+<-]> > > >-[<+> >+<-]>[<+>-]<<<<[->-> >-[<<+> >[>+<-]]>[<+>-]<<<[<<+> > >[>+>+<<-]> >[< <+> >-]<<<+]<]> >[-]>[-]<<<<+> > > > > >[[<<<<+> > > >-]> >]<<<<<<[<<]<]> > > >> ]<<[<<]> > > >[--[<+>++[>+<-]]>[<+>-]<<-[+<-> > > >-[<<<<+> > > >-]<<<<+> > > >> >[[<<<<+> > > >-]> >]<<<<<<[<<]<]>---[<+>+++[>+<-]]>[<+>-]<<-[+<-> > > >-[<<<<-> > > >-]<<<<+> > > > > >[[<<<<+> > > >-]> >]<<<<<<[<<]<]> > > > >]<<-[> > >++++++ ++++<<<[-> > >->-<[>+<[<+>-]]<[>+<-]> >[<<<+> >++++++++++>+]<<<<]+++++++++++> >> [<<<-> > >-]<<]<[>++++++[<++++++++>-]<-.[-]<] = で式の終了 空白入っててもおk 答えがマイナスだとちゃんと出力してくれないので注意
240 :
1/3 :2007/06/16(土) 12:18:45
> >+++[<+++++[<+++++++>-]>-]<<.> >>+++++[<+++++++++++[<++>-]>-]<<.>++ ++> >++++[<++++[<+++++++>-]>-]<<.>++>+++++[<++++++>-]<.>+> >++++[<+++++++++ [<+++>-]>-]<<.>+> >++++[<++++[<++++++>-]>-]<<.<<<<<.>.> >> >>+>+++++++++++++[ <+++>-]<.>++>+++++++++++++[<+++>-]<.>++>+++++++++++[<+++++++++++>- ]<.> >+++++++++[<+++++++++++>-]<.>++>+++++++++++++++++[<++++++>-]< .<<<<<.> >> >> >++> >++++[<++++[<+++++++>-]>-]<<.> >+++++++[<++++++>-]<.<<<<<<<. > >> >> >> >+> >++++[<+++++[<+++>-]>-]<<.>+>+++++++++++[<+++>-]<.>+[ [-]>,[>+>[-]+<<-]> >[<<<+> >>[-]]<[>+>+<<-]>[<+>-]+>----------[<[-]>[-]]<[-<<+> >]<[>+>+<<-]>[<+>-]+>-->+++++[<------>-]<[<[-]>[-]]<[-<<++> >]<[>+>+ <<-]>[<+>-]+>-->+++++++++[<----->-]<[<[-]>[-]]<[-<<+++> >]<[>+>+<<-]>[<+>- ]+> >+++++[<------------------->-]<[<[-]>[-]]<[-<<++++> >]<[>+>+<<-] >[<+>-]+>->+++++++[<------------->-]<[<[-]>[-]]<[-<<+++++> >]<[>+>+<<-]>[<+ >-]+>--->+++++++++++[<----------->-]<[<[-]>[-]]<[-<<+ +++++> >]<[-]>[-],[>+>+<<-]>[<+>-]+>----------[<[-]>[-]]<[-<<+> >]<[>+>+<<-]>[<+>-]+>-->+
241 :
2/3 :2007/06/16(土) 12:25:14
++++[<------>-]<[<[-]>[-]]<[-<<++> >]<[>+>+<<-]>[<+>-]+>-->+++++++++[<----->-]<[<[-]>[-]]<[- <<+++> >]<[>+>+<<-]>[<+>-]+> >+++++[<------------------->-]<[<[-]>[-]]<[-<<++++> >]<[>+>+< <-]>[<+>-]+>->+++++++[<------------->-]<[<[-]>[-]]<[-<<+++++> >]<[>+>+<<-]>[<+>-]+>--->+++ ++++++++[<----------->-]<[<[-]>[-]]<[-<<++++++> >]<[-]<[->+<]>[-<+++++++>]<[-<+>]+++++[<+++ ++++>-]<<[>.>+<<[-]]>[-]>[-<<+> >]<<]<.> >> >>++++[<+++++++++++>-]<.<<<<<<.> >> >> >> > >+++++ ++[<+++++++[<++>-]>-]<<.<<<<<<.>.> > > > > > >+++++++++[<+++++++>-]<.>+>+++++++[<++++++++++++ +>-]<.<<<<<<<<<<<<<<<<<<<<.> >.> >> >> > > >> > > >> > > > > > >++>+++++++++[<+++++>-]<.> >+++++[< +++++++++++++++++++>-]<.<<..> > >+++>+++++++++++[<+++++++++++>-]<.<<<<<<<<<<.> >> > > > >
> > > > ++++> +++++[<+++++++++++> -]<.> > +++++++[<+++++++++++++++++> -]<.<<<<< <<<<<<<<<<<.<<<<<<<<<<.> > > > > > > > > > > > > > > > > > > > > > > > > > > > > ++++[<+++ ++++++[<+++> -]> -]<<.> +> > ++++[<+++++[<+++++> -]> -]<<.<<<<<<<<<<<<<<<<<<<<< <.> > > > > > .<<<<<<<.> > .> .> > > > > > > > > > > > > > > > > > > > > > > ++++[<++++[<+++++++ > -]> -]<<.> > +++++++++[<+++++++++++++> -]<.<<<<<<<<<<<<<<<<<<<<<<<<<<<<.> > > > > > > .> .<<<<<.> > > > > > .<<<<<.> > > > > >> > > > > >> .> > > > > > > > > > > > > +++++++[<
+++++++++++++> -]<.<<<<<<<<<<<<<<<<<<<<<<<<<.> > > > > > .<<<<<<<.> > > > > > > > > > > > > > > > > > > > > > > > > > > > +++++++++[<+++++> -]<.> > ++++++ +++++++[<+++>-]<.> > +++++[<+++++++>-]<.<.<<<<<<<<<<<<<<<<<<<<<<<<<<.> > > > > > > > > > > > > > > > > > > > > > > > > > > > +> ++++[<+++++++++> -]<.> > +++++[<+++++++++++> -]<.> ++> +++++++[<+++++++++++++> -]<.<<<< <<<<<<<<<<<<<<<<<<<<<<<<<<.> > > > > > > > > > > > > > > > > > .> > > > .> .<<<<<<<<<<<<<<<<<<<<<<<<<<<<.> > > > > > > .> .<<<<<.> > > > > >.<<<<<.> > > > > > > > > > > > >.> > > > > > > > > > > > .<<<<<<<<< <<<<<<<<<<<<<<<<.> > > > > >.<<<<<<.<.> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > +>+++++++[<++++++> -]<..<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<.> > > > > > > > > > > > > > > > > > >
> > > > > > .> > > > > > > ++> +++++++[<+++++++> -]<.> +> ++++[<+++++++++++++>-] <.<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<.> > > > > > > > > > > > > > > .> > > > > > > > > > > > > > .> .<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<.> > > > > > > > > > > > > > > > > > .> > > > > > > > > > > > > > > > > > +++++[<+++++[<+++++> -]> -]<<.<<<<<<< <<<<<<<<<<<<<<<<<<<<<<<.> > > > > > > > > > > > > > > > > .<<<<<<<<<<<<<<<<<<<<<<<<<<.> > > > > > > > > > > > > > > > > > > > > > > > > > > > .<<<<<<<<<<<<<<<<<<<.<<<<<<<<<<.> > .> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > +++> +++++++++[< +++++> -]<.<<<<<<<<<<<<<<<<<.> > > > > > > > > > > > > > > > .> > ++++++++++.
仮分数ワラタ
>>245 オレだって3つに分割するつもりだったのに、
行数が多いだの、文字数が多いだの、長すぎる文章があるだの、オレのJaneちゃんが騒いで
結局こうなったんだよ
> > と空白開けてる涙ぐましい努力に感動した。
とりあえずロダとか使おうぜ・・・w
ロダは残らないから直接貼りたい気も分かる
lzh+ishで貼ろうぜ
むしろ自分自身を伸長するBFコードを
大抵、情報量ふえるかんな
( )で代用汁
それはもはやBrainfuckではない
>>240-244 を空白消して1行78文字で改行
3,214バイト
7zで圧縮
505バイト
Base64変換(ish変換ツールもってなかった orz)
698バイト
これ↓
N3q8ryccAAJ9ubnIjwEAAAAAAABKAAAAAAAAAPNHOwAAPgIin9tbmLQH5OUWH/8vi9F0JxYB
2T0mBiayAKIYxLBqqDYX15FJv6qKPg/hrbNlEQLm5PfDnAu58T/X445IQkuPTZOsZs4ovneD
LQasGzi25Y4bdN9qB0DDJVmTEhTOKv/c0O5qddzZx0fQpsbcMm5GpLvFZOKT0rhLzwFPTfn2
JzOYoxOtWwTFIsNIh/vPRA5ESXHvnM3WDBulntmQhJL1wnCKJqZyYHblqX1soO/dvSGLhHUF
HZVvUkJdmnM99X5d8MA1W7c042MWIp1VVaMSFMh8h2tnccTokjsOJcB0p6ZIvJATKU4mA4H1
GUGWaMqTORDjRXnioI3eHyA2okBA/h6sDp5AOaOvbeBC6egkJDo6EeC47ZGEnICUkczsLKgZ
jTIhBiw/YukM87+wfwuH0kUes6etaLi6oBRI1uW2Z7IpGiDGSJQRJ589avyy7XoLHCT9nSb8
4vN8mc5Vlvq5LokYPGeRBJKBri7+NzvZTmCNLmX6Tq7oRErAQqnQXBicmFW3ZWu96zbmreQB
BAYAAQmBjwAHCwEAASMDBAEFIAAAABAMjI4ACAoBQp9sSQAABQERCwB0AGUAcwB0AAAAFAoB
ADjH0LF3sMcBFQYBACAAAAAAAA==
心なしか可読性が向上した気がするな。
文字を自由に変更できるようにしたインタプリタがあればいいんだね?
Brainfuckでライフゲームなんて楽しそうだな。 だれか二次元ライフゲームplz
0…死 1…生 自分の隣が共に1または0なら次の世代は0 〃 が1と0(順不同)なら次の世代は1 端っこの隣のセルの無いところ(空白)は0とする。 例) @0110010→1111101 A0011000→0100100 ルールは、一般に生きてるセルか死んだセル(空白)が混んでる所では生きられない、という原則に基づいて作った。
261 :
デフォルトの名無しさん :2007/06/18(月) 18:27:35
>>260 セルをセットして左から順に次の世代がどうなるか考えてたけど
順にやると結果が全然違うことに気がついた。
偶数メモリに第0世代
奇数メモリに第1世代
偶数メモリに第2世代
奇数メm・・・
:
っていう風に違うメモリをセルの個数だけ用意してやらんとあかん訳だ。
左からn個目のセルは
{2n-2}に第0世代
{2n-1}に第1世代
{2n}に第2世代
:
という風に全体的に1ずつ右にずらせば、いいのかな。
2つずつ左右の差が0なら、右となりのメモリを0にして、 そうじゃないなら、右となりのメモリを1にする。 っていうのを繰り返せばいいんだろ。簡単じゃねえか
なんか凄いな、Brainfuck。C言語で int main(){char a;scanf("%c",&a);a++;printf("%c",a);return 0;} っていうプログラムも、BFにかかれば、 ,+. になっちまうんだもんな。すごいよBrainfuck。すごいよUrban Muller。 あ、あとBrainfuckをBrainf*ckって言ってるサイトが多いから、 Brainfでぐぐっても結構引っ掛かるんだよな。だから、Brainfっていう呼び方を推奨する。因みに日本語訳は、”魚の骨”だ。解説は要らないと思う。保守。
BrainFunction
DLR対応Brainfuckコンパイラまだー?
,
JavaScriptに直接BFが組み込まれたらいいのにな。
>>268 それじゃ、面白くない。
普通に
function ***(n){
Abc.bf(+++++>,);
}
とか使えたらいいのに、、、
それになんの意味があるんだ……?
そんなことより、電脳コイル面白いなw
<!-- JavaScript仕様みたいなヤシ //--> // Brainfuck.js mmr[500]=new Array(); p=10; Brainfunction BF(cord){ for(i=0;i<cord.length;i++){ chr=i.charAt(i); if(chr == '+')mmr[p]++; if(chr == '-')mmr[p]--; if(chr == '>')p++; : : } } っていう風に通せばJScriptでもBF使えるだろ
ないわ
bfainruck
Cのプリプロセッサでネイティブコンパイルできそうじゃね?
少なくとも標準Cでは無理。
少なくとも異準Cでも無理。
>>276 BRAINFUCK(n p p p p...
みたいな構文になっても良いならできる。
インタプリタならこんな感じでいけそうだ。 #define BF(code) brainfuck_exec(#code) BF((+++++>,));
負数番地はレギュレーション違反なのかよw
>>273 function brainfuck(e){var m=[0];var p=0;var l=0;var r=[];for(var i=0;i<e.
length;i++){var c=e.charCodeAt(i);if(c==62){p++;if(p>=m.length)m.push(0)}else
if(c==60){p--}else if(c==43){m[p]++}else if(c==45){m[p]--}else if(c==91){if(!m
[p]){for(;;){i++;c=e.charCodeAt(i);if(c==91){l++}else if(c==93){if(l==0)break;
l--;}}}}else if(c==93){for(;;){i--;c=e.charCodeAt(i);if(c==93){l++}else if(c==
91){if(l==0){i--;break;}l--;}}}else if(c==46){r.push(m[p])}}return String.
fromCharCode.apply(this, r);}
引数に値を渡して , で取得できるようにしようと思ったが面倒なので諦めた。
>>282 一番厳しいレギュレーションだと0->ffのデクリメントもダメでなかった?
286 :
デフォルトの名無しさん :2007/06/29(金) 16:09:44
おもしろいのみつけた 何の言語処理系か調べるプログラム #define v [ #include <stdio.h>/* # # Perl / Ruby / Python / C++ / Brainfuck / Befunge Polyglot by shinichiro.h # # ]+++++5++++[>++++>>+++>>+>>+[+<+<+++<+++<++<++<-[>>]<<]>-] # >>.>++5.>..+++.>>>-.<----.<<<<------.>>+++.<----.++++++++. # >----.+-<---.>>.<<---.>---.>>.<++.--------.+++.<+.<+.>>>+. # [-][ # >"!dlrow egnufeB ,olleH">:#,_@ # s='''=*/ int main(){puts("Hello, C++ world!");} /* =; print "Hello, Perl world!\n"; <<s; ' puts "Hello, Ruby world!" <<s ''' print "Hello, Python world!" s s=''' ]'''#==#*/
おもすれー。発想の勝利だな。
このスレずっと見てるヤツっているの?
っていうか前スレの
>>1 ってまだいるのかな?
俺はそのころからずっと見てるんだが、、、
俺は前スレの50あたりから参戦
前スレのjavaアプレットが出たあたりから見てるよ。
プログラマーが一度は書いてみたい衝動に駆られる言語の一つだよね(lispとbf)
ふつうlispは日常的に使ってるだろ。
逸般人
>>292 endユーザとして使うのと処理系作るのじゃだいぶ意味ちがくね?
私はこれで、ポインタをマスターできました! とかっで、本出せそうだな。だれかそんな猛者いないかな。
Lispやる奴は日常的に実用する人と ちょっと書いて終わる人に分かれるな。 BFを日常的に実用する奴はまずおらんだろwww
頭の体操になりすぎて熱でるわw
25歳。 去年までプログラムの素人だったけど、BFで二年でポインタをマスターした。 一度やってみなよ。
普通は3日で覚えられます
覚えるだけなら1日もかからんが、 色々やろうとするともうちょっと知識がいる。
目指せBrainfucker! 秋頃、BANDAYより、ゲームボーイで発売。
>301 ジャンル:パズル
イコール:アダルト脳開発パズルRPG
どんなんだ
平成のアインシュタインないしは、アーバンミュラーが生まれそうだ
Brainfuckコードが右から流れて それをその場で、脳内インタプリタ。
8つの命令を8つのエロ画像とかで置き換えれば成立するかも。
萌え画像にしたやつならあったはず。
VIP語というのがあるらしいがぐぐってもよくわからん・・・ Brainfuckの派生言語なのか?
wwwwwwwwwwwwwwちょwwwwwwwwwwwwwwおまwwwwwwwwwwwww
>313 なるほど…BFコードかも知れんな。
>>316 ! ポインタをインクリメント
; ポインタをデクリメント
w ポインタが示すメモリ位置のデータをインクリメント
^ ポインタが示すメモリ位置のデータをデクリメント
おk ポインタが示すメモリ位置のデータを出力
うは ポインタが示すメモリ位置のデータに入力
ちょ ポインタが示すメモリ位置のデータがヌルなら対応する おま までジャンプ
おま ポインタが示すメモリ位置のデータがヌルじゃないなら対応する ちょ までジャンプ
>>178 !wwwwwwwwwwwwちょ^;wwwwwwwwwwww!おま;^^^^^^^おk!wwwwwwwちょ^;wwwwwww!おま;wwwおk!wwwwwwwwち
ょ^;^^^^^^^^!おま;wwwwwおk!wwwwwwwちょ^;wwwwwww!おま;^^おk!wwwwwwwちょ^;^^^^^^^!おま;wwおk!www
wwwwwwちょ^;wwwwwwwww!おま;^^^^^^^おk!wwwwwwwwちょ^;^^^^^^^^!おま;おk!wwwwwwwちょ^;wwwwwww!お
ま;wおk!wwwwwwwちょ^;^^^^^^^!おま;^おk!wwwwwwwwwwちょ^;wwwwwwwwww!おま;^^^^^^おk!wwwwwwwwwwち
ょ^;^^^^^^^^^^!おま;^^^^おk!wwwwwwwwちょ^;wwwwwwww!おま;wwwwwwおk!wwwwwwwwちょ^;^^^^^^^^!おま
;^^^^^^おk!wwwwwwwwwwちょ^;wwwwwwwwww!おま;^^^^^^^おk!wwwwwwwwwwちょ^;^^^^^^^^^^!おま;wwww
wwwおk!wwwwwwwwちょ^;wwwwwwww!おま;wwおk!wwwwwwwwちょ^;^^^^^^^^!おま;^^おk!wwwwwwwwwwちょ^;ww
wwwwwwww!おま;wwwおk!wwwwwwwwwwちょ^;^^^^^^^^^^!おま;^^^おk!wwwwwwwwwちょ^;wwwwwwwww!おま;^^
^^^^^おkおkおk
>>187 ちょ!!w!w;;;^おま!!!ちょ;;;w!!!^おま;;ちょ!!w!w;;;
^おま!!!ちょ;;;w!!!^おま;;ちょ^!^!!^;;ちょちょ!w;^おま
!!w;;おま!ちょ;w!^おま!ちょ;;;;ちょ!!w!w;;;^おま!!!ち
ょ;;;w!!!^おま!!w;wおま;;;おま!ちょ!w;^おま;;ちょ!w!w
;;^おま!ちょ;w!^おま!!ちょ;^!^おま!!ちょ;;;;w!!!!^おま
;;;;;;
うざ
>>317 それいいなwwwVIPで流行りそうだなwwwwwおk
前すれ576で既出だ。
576名前:デフォルトの名無しさん[sage] 投稿日:05/03/07(月) 20:33:19 www BFの+ っうぇwww BFの- うはwww BFの> おkkwww BFの< みwなwぎwっwてwきwたwぜw BFの , 修正されるねwwwwwwwww BFの . ワロスwww BFの[ ワロタwww BFの] _______________ なんとなく、古い感じがwww
【なんかむしゃくしゃしてたから勢いだけで作った。今は後悔してないBrainfuck】 0〜4のどれか ・・・ + 5〜9のどれか ・・・ - A〜Iのどれか ・・・ > J〜Rのどれか ・・・ < S〜Zのどれか ・・・ , a〜iのどれか ・・・ . j〜rのどれか ・・・ [ s〜zのどれか ・・・ ] 例)HelloWorld 02301420kH041023141O9zCeQ01214kA042031 L8xH9bI22eD404R6uE4bh111dP003204iB9675M5t EdN020314dG1032P7xFa114f957685h95768596f
BF暗号かよ
>>323 0hSEx
とかくだらない事考えちゃうだろ
<<236-237の電卓改良した。カッコに対応。マイナスは相変わらず非対応。 > > >,> >++++[<++++[<------->-]>-]<<-[> >++++[<++++[<+++++++>-]>-]<<+> > >-[+<<, >++++++[<---------->-]<-[> >-<]>[<]>[<++++++[<++++++++++>-]> >-<+]<<+> > >]> > > > >+>--<<<<<<<<<[<]>[[>]> > >->-> > >[> >]+[<<]<<[+<<<<[<]<-> >[[>]>+<<[<]>-]>[ >]>[>]<[> >-<++++++[<-------->-]+<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[ >[-]++++[<++++>-]<+> > >[<<-> > >-<+]>[<->+]<<<<[>[+]+++++[<++++++++>-]> >[>+>-< <+]> >[<<-> >+]<-[<<+<<[<<[<]<+> >[>]>-]<<[<]<[>+<-]>[>]> > > > >+]<<<<[-]]>[> > > > >[> >]+<--<[<<]<<<+]<]]]]]]]]]]]>[> > > > >[> >]>+<<<[<<]<<<-]> > > > >[> >] >[-<<<[<<]<[+]> > >[> >]<<-[>+<-]> > > >++++++++++[<<<[<+> >+<-]>[<+>-]> >-]<[<<
<+> > >-]<<[-]<+> > >]<<<[<<]<<]-[+<<<<[<]<-> >[[>]>+<<[<]>-]>[>]>[>]<[> >-<++++ ++[<------->-]---<[>-<-[>-<--[>-<--[>[+]-<++++++[>++++++[<++++++++>-]<+[-]]>[> > > > >[> >]+>-<[<<]<<<+]<]]]]]>[>+<[> > > > >[> >]>-<<<[<<]<<<+]> > > > >[> >]+[< <]<<<]>]<<<<[<]>]> > > >[> > >[> >]<<<<<<[> >->[+]>-<<<<[<<]]<+]> > >[> >]+>-<[< <]> > > >[>+[-> >+]<-<++[--<<++]<-> > > >[-> > >--<<+++[> >+<<+++[> >+<<------[< ->+]]]<[>-<+]+> > >[<<<<<-> >-> >->+[+<<<<<[>+<-]> > > >[<<<[<+> >+<-]>[<+>-]> > -]<<<[-]<+> >>+> >]<<-[+<<<[>+<-]> > > >[<+> >+<-]>[<+>-]<<<<[->-> >-[<<+]>[>]<< <[<<+> > >[>+>+<<-]>>[<<+> >-]<<<+]<]<+> > >[-]>[-]<]> > >[[<<<<+> > > >-]>[<<<<
-> > > >+]>]-<-<-<-<<<[<<]> > >]>]<<[<<]> > > >[-> > >--<<++++[> >+<<+[> >+<<--- --[<->+]]]<[>-<+]+> > >[<<<<<-> >-> >->+[+<[<<<<+> > > >-]<<<<+> > >+> >]<<-[+>[ <<<<-> > > >-]<<<<+> > >]> > >[[<<<<+> > > >-]>[<<<<-> > > >+]>]-<-<-<-<<<[<<]>> >]>]<<[<<+> >-]> > >[>]>[[<<[<]<<+> > >[>]>-]>[<<<[<]<-> >[>]> >+]<-<-[<]>+>+>[> ]>]<<[+<]<<<<[<<]> > > >]<<-[> >++++++++++<<[-> >->-<[>+]>[>]<[<<+>++++++++++>+] <<<]<++++++++++> > >[<<<-> > >-]<<++++++[<++++++++>-]>]<<[.[-]<]++++++++++.[-]<< <<<<<[[+]<]> > >,,> >++++[<++++[<------->-]>-]<<-] = で式の終了。q でプログラムの終了。 プログラムが終了しないときは = → 実行 → q → 実行 で終了するはず。 123+45 * 6+ (200+ 12 *( 99 -90) / 4 )*77 *= を入れたらちゃんと17872を出すからバグはないと信じたい。
大作をこのスレに貼ろうとすると、
>>326-328 のように分割しなければならなくなるので、
とりあえずランレングスでBFコードを簡易的に圧縮してみようとしたんだが、結局サイズは
オリジナルの3/4程にしかならなかった。以上チラシの裏。
gzip+base64で半分以下になる。
命令セットが3ビット分しかないから、1バイトで2命令は表現できる。 つまり、半減するのは当たり前。
333 :
デフォルトの名無しさん :2007/07/08(日) 11:22:49
CとかJAVAなら、人が作ったプログラム見て、勉強になるんだが、 BFの場合、全くわからんなw
334 :
デフォルトの名無しさん :2007/07/08(日) 11:45:45
>>326-328 をGZip+Base64
H4sICFJPkEYAAIGfdzVLMjdCRnIyAJWV63ECMQyE/9/MVSKUCjRuxOP+28jntc6CC0wSAcaWVmu9
Dlprj9YM6bFWX9J88I7wfplrRS6zQeDdIh5C2XksimIRg8doXR+z4ikqAJZsHBC0HpLzYJFvlw1O
1g4QlsCJ2xciMAhkOsILTJ9QCHk1jE/hGTYL//vSfVQGEMygz4PMuH7lwd4b6SDAbVTGlS9kYCc4
PcE7O4UeM0YREztwpaM4MyXkusDHVLUsCQifBNMGYJQQ44apQgmDstTdLz1hpzKUecJsS1dnOkFm
WJGNHChzLobi037sC4d/bth5fGhZ9YsVk4dr2SvxbnS7vNY87j7da9VupZLVohAAoiCpPo89eYS8
mjA3su6aIcqAwCZN8gxobrdzhJF7ew5BGFs8bB5EOldpsICpTZZljRvkXeO35xHBVW/rpnN1Evv7
7lXPLLtvegrL9e4mYtdFsBrqbLdY8AMsV2nkAIrpGQswiVCqMkAmCBG9UkAgpb96iVlgdLkXC1ln
nXZ98utDld7U6Pl6Zf1aiIoI+wX9T9wwVuRycLmjgQIVekuFiJbOpcn5cDSzplINPYU2/aoW9bOd
gkkpOslnf3R7ISZ1wGL1zFwV8szWfv6OKY0vNa+odF7Su2HSPD5++ZsZ31FFeUKKBgAA
Base64自体、6bitコードなんだから、> 000, < 001, .. って割り振ってそのままエンコードしたほうがよくないか?
不要な文字を取り除いてgzip+base64がベストかな
>>335 はこれより大きくなった
>>326 1回計算終わった後、再実行しないと計算結果変わってくるよ
>; 自分でもよく覚えてなくて分からないところあるし あるある
340 :
デフォルトの名無しさん :2007/07/09(月) 00:00:27
現在BFコードを圧縮する技術を開発中
まだ圧縮しか出来ないし復元できるかも未確認だがとりあえず
>>326-328 を圧縮してみた
ちなみに
>>334 は676文字、こちらは618文字だ(数え間違い等あるかもしれない)
LKJ?cOBU>1Wm\oBU^>1A<`nInOBC@C4D<XHo\oGZ9:LMX_bhoH@ARMBbA3A>h8R73V<2DXRa
PB55::<JRnInWD4A59XR4DA2Z81ETP:B@59XR4DA2:BacNYea9WX@aT2OD4QhcnGZAER5J
Lb2C`5SS1[AQB736ET::dGhSD:jS6R8ShPGH@BBBBBAOd@577lDOd@ARS36AXS6>1ETjmol
H]8E\B==NMj8]>lhP321AlH`TARE<6DZX@AQACd?cOBQSX49X4I@9bPR84RnYnIo;]TBAOd@
DRhPGH@BBA5AOd@9>>h5jS6RL`3:laP2mXS6nSV4AX4?>8;dA3A9R3jAUT5VX9S=<iAbI\C;f
Y5c?HBQTA9:4MlCV<Y4a7ETjaSeRDa:edSdjJh44aA5YN\FT:FY?BBVP;DDhaeAEaDS[YGH`j
8ET6dA?OZhCNQ2Q8AR477dQ277dSTcH?]HY5c7<Y@bX45R>n9CVDR8njY_^6>1AaWldG7j8`
G?El9_@Q@T8ARS3j@QS[Y>:D4hH`eAQB5?6<IDX5V813ZZX@QS82nhPNh4dnO<BVT8Z@AQ
aEo_2?Ho_SWLjnIo;Eh84T64o?88m?24Q1MPgcNVoT:M:
>>340 それはもちろんBFで開発してるんだよね?
それは無いんじゃないか?w
カタカナ入れてBase128にしちゃえば・・・
そもそも2chに書き込めない文字って何があるんだ? とりあえず、ヌル文字、CR、LFはだめそうだよな
よく分からんが、 +-<>は連続しやすい []はあんまり出てこない .,はほとんど出てこない ってのは圧縮のヒントになる?
どうせならもっと高度な圧縮を期待する たとえば、 [圧縮前] +++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-. ------------.<++++++++.--------.+++.------.--------.>+. ↓ [圧縮後] Hello, world!
なる。
なんという不可逆圧縮/(^o^)\
base64の代わりにascii85とかbasE91を使うと良さげ
小腸みたいだなw
コードの最初に[が付くっておかしいよな?
[から]までスルーされるだけだろ
>>122 とか少なくとも俺が試した限りじゃ動かないし
>>355 コードの破片なんだから、それ以前にメモリに何か書き込まれてるわけで、[で始まっても何の問題もない。
ごめん、よく見ればわかることだったな・・・orz
まだ、在ったのか しかもパート2にまでなって。 もう、俺が立ててから5年になるのに、伸びてないな。
>>359 お前が+をデクリメントとか言ったせいで!
<[+-.,]> っていうBFコードっていきなり<するもんだから、エラーでちゃう><
負のポインタを扱えるかどうかは処理系依存
むしろ対応してるヤシなんてほとんどないよな。 だから、初めを{30}番地位に設定すりゃいいんだよ
プラス方向とマイナス方向に二つメモリ持てばいいじゃん。
>>364 そんなことしてたら、インタプリタ重くなるじゃん。
わしのインタプリタは108番地まであるぞ
108って少なくないか?
Brainfuck#.NET
<[(+.-)]>みたいなのかと思った。
Objective-Brainfuck!
つ brainfuck++
Aspect Brainfuckまだー
オブジェクト指向のBFってどんなんだよ。
375 :
デフォルトの名無しさん :2007/07/15(日) 01:35:26
標準brainfuckはコードセグメントとデータセグメントが分断されてるが、 これを同じところにしてやったら面白いんじゃないかな。 0[-][Hello World!]>>>>>.>.>.>.>.>.>.>.>.>.>.>. これでHello World!が表示できるとか。
befungでも使っていてください
377 :
375 :2007/07/15(日) 01:43:46
あと自己進化プログラムとかも賭けるようになるな
>>375 コードポインタとデータポインタを同じものにしたら、さらに面白くなるんじゃね?
拡張BFとかに興味は無いが やるのならobfuscated languageとしてのアイデンティティを維持するために いかに訳の分からなくなる表記方法を採用するかだな Hello Worldを表示するコードにHello Worldがあるなんて論外
じゃあ "!" 一つでHello Worldを現在のポインタから連続するメモリ上に配置だ
じゃあ、"Q"でプログラムのソースコードを現在のポインタから連続するメモリ上に配置
じゃあ、# で現在のポインタから先をBrainfuckコードとして実行
無限ループって怖いよね
>>385 どうせ引用するならオリジナルに敬意を払って!でなくHを使えと仰せですか
深読みしすぎ
!>>++>++++++++>--------------<<<<.>.>.>.>.
へん・・・た・・・?
......
....
Henta
微妙にヴィジュアライズされているようなされていないような
ヴィジュアラーイズ(・∀・)
BFコードを圧縮するのに、 そのコードを出力するBFコードを書いた場合、 どんな時に短くなるのか、いろいろ試してるけど、規則性的な事が分からん。
>++++++++++[>+>+++>++++>+++++++++>++++++++++++[<]>-]> > >+++. ++..<<+++.---.> > > >++++.<<<++..> > >.<<<...> >+++++.<<...>..--.<............> >.<<<+++.---.> >.++..<..>--.++.<....>..--.<..>++.<..>--.>..<<...> > >.<<<........> > >.<<<.> >.>.<<<<+++.---.> > > >.<<<..> > >.<<<.> > >.<<<....> > >.<<<..> > >. <<<..> > >.<<<..> > >.<<<..> > >.<<<.>++.--.++.<.> > >.<<<..> > >.<<<..>--.++.> .<<<+++.---.> >--.++..<........>..--.<..> > >.<<<..> > >.<<<..> > >.<<<..> > >.<<<.. >.++..> >.<<<..> > >.<<<..> > >.
397 :
デフォルトの名無しさん :2007/07/19(木) 15:22:28
なんつーか・・・非常にユニークですな
フォントが手抜き+++++++++++++
400 :
396 :2007/07/19(木) 17:46:16
>++++++++++[>+>+++>++++++++++++[<]>-]> > >++++........<<+++.---.> >..<++.. ..>...<<+++.---.> >..<....>...<..................>..<.............>...<.................>..<<+++.---.> >.......<...>..<..>..<..>.....<..................>..<............>.....<..>..<..>..<<+++.---.> >..<.. ..>..<..>....<...>..<...>..<...>..<.>..<.>....<..>......<.>..<...>..<.>..<...>..<.>..<.>..<<++ +.---.> >..<.....>..<.>..<......>......<...>..<.>...<...>..<...>..<...>..<...>..<.>..<......>...<< +++.---.> >..<....>...<.>..<.....>..<...>..<...>..<.>..<....>..<...>..<...>..<...>..<.>..<...>.. <.>..<.>..<<+++.---.> >........<..>..<......>....<.>...<.>..<.>..<....>..<...>..<....>.....<...> .....<..>..<...>.. 遠目で見れば・・・ね。
D言語おもすれー module brainfuck; const(ubyte)[] brainfuck(const(char)[] code)(in const(ubyte)[] input = []) { ubyte[] output, mem = new ubyte[100]; uint ptr, readptr; mixin(_brainfuck(code)); return output; } private const(char)[] _brainfuck(const(char)[] code) { char[] o = "".dup; foreach(c; code) { switch(c) { case '>': o ~= "if(++ptr >= mem.length) mem.length = mem.length * 2;"; break; case '<': o ~= "--ptr;"; break; case '+': o ~= "++mem[ptr];"; break; case '-': o ~= "--mem[ptr];"; break; case '.': o ~= "output ~= mem[ptr];"; break; case ',': o ~= "mem[ptr] = readptr < input.length ? input[readptr++] : 0;"; break; case '[': o ~= "while(mem[ptr] != 0) {"; break; case ']': o ~= "}"; break; default: break; } } return o; } unittest { assert(brainfuck!("+++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-. ------------.<++++++++.--------.+++.------.--------.>+.") == cast(ubyte[])"Hello, world!"); }
>>402 これはbfを埋め込み言語として実装したってことでおk?
これだったら、沢村さんの考案したVisualEno方がはるかにマシ
アセンブラで、BF実装プリーズ
>>402 コンパイル時関数実行でBFコードから関数を作ってるのか?
Dはよくわからん。
408 :
デフォルトの名無しさん :2007/07/22(日) 18:12:52
どうせならC++のテンプレートで作ってくれ
409 :
デフォルトの名無しさん :2007/07/23(月) 12:27:44
Befungeでもやってみようかなって思って 命令の数多いな、って一瞬でも思った俺は 間違いなくBrainfucker
+[.]
411 :
デフォルトの名無しさん :2007/07/24(火) 01:47:18
412 :
411 :2007/07/24(火) 01:55:04
すまん、DLKeyはbfiだ。
>>412 そもそもそんなサイトがないと言われます
よくBFで書いたBFインタプリタってあるけど、 俺が試した限りじゃなにも起きないんだけど。
416 :
デフォルトの名無しさん :2007/07/24(火) 20:47:51
バグが取れないときに机の上でラッキョを転がすと バグは取れないけど幸せになるよ! ∧_∧ ( ´∀`) (つ, ,σつ  ̄ ̄ ̄ ̄ ̄ ̄| | ━━━━━━━━━━ ∧_∧ (´∀` ) ⊂ρ、、⊂)  ̄ ̄ ̄ ̄ ̄ ̄| | ━━━━━━━━━━
懐かしいな
Brainfuckの命令をC言語で表せるなら、 Cは、超完全チューリングマシーンなんじゃないか?
brainfuckでCのインタプリタを書ければ互角だろ。
そう考えたら、Brainfuck最強じゃね?
>>418 意味も分からずに、無理して言葉使わんくてもいいからw
BF専用CPU作ったら超シンプルな構造になりそうだな。 1コアで3000スレッドくらい動かせそうだ。
>++++++++++[>+++++ +++>+++++++++++>++ ++++++++++[<]>-]>-- .>>---.<--..<++.>+++.
>>422 無理。何故なら、BFにはスレッドに関するニモニックがないから。
微小コアでBFが動くから、1ダイで3000コアくらい載せられるって言うなら話は別だが。
425 :
55 :2007/07/28(土) 06:35:18
+[>+]
武雨賦亜苦
428 :
factor.bf :2007/07/28(土) 23:45:15
ネットで色々調べてみたが、因数分解するBFコードには こころから感動した。C言語やそこらのプログラミング言語 だって平伏しちゃう位、ずっと優秀。 いろいろ見てきたが、普通プログラマが言語を選択 するはずなのに、言語が使う人を選ぶ。天才は常人から見れば、 キチガイだなんてよく言われるが、Brainfuckはそんな言語だろう。
俺も大好きです
結局BFに特化したOSってどんなんなの?
BFに特化したOSって… マトリックスの字が流れるところにBFコードが流れてるの想像して噴いた。
なんか、作りたいけど 大抵のものは作られてるから やる気で無いな。
つ BFオプティマイザ
オプティマイザって最適化のこと? それは急に難しそうになるな。
最適化って +の一個前(or後)に-があったら、相殺するとか、 ,のスグ前に連続して+or-があったら、そいつを消すとか こういうコト?
最適化されたアセンブリコードを吐き出すのでもいいよ。
>>435 それ俺作ったよ
作ってみたはいいものよく考えたら需要ないって気付いて現在お蔵入り状態
BFのコンパイラ作ってみたいと思ったんですけど、 exeを作成するための知識が全くありません。 適当なサイトありませんか?
440 :
デフォルトの名無しさん :2007/08/02(木) 21:00:12
>>437 俺も作った。
上のどっかで公開もして、その後も続けてたが飽きた。
メモリ間で足し算するコードとかかけ算コードとか、結構最適化出来るよ。
実行速度が単純実装の4〜5倍くらいにはなる。
標準入力のデータがからまない部分は コンパイル時に全部算出できちゃいそうだな。 それこそhello.bf -> hello.cすると main(){ printf("hello, world\n"); } に置き換わっちゃったりw
なんかそれ空しいなー
素数かどうか判定するBFコードを1時間で書いた。 最適化してみたら、 main(){int n,f=0,i;scanf("%d",&n);for(i=2;i<=n;i++){if(!n%i){f=1;}}if(f){printf("not prime number");}else{printf("this is prime number");}} になったよ\(^o^)/
!!
!+!
i!
__<+++++[>---<-]__
i!i!i!
言語: 英語 を見落としてうっかり参加するところだった。
参加しちまった俺がいる
ほんとだ一人増えてる
BasicFuck
****Fuck
しかし、fuckとか名前付けてるトコからみて アーバンミュラーはこの言語好きじゃなかったのかな
のーみそこねこね
( ゚∀゚) のーみそこねこね ミ⊃ ⊂彡
>456 「脳みそが犯される言語」ぐらいのニュアンスじゃね? BFコードばかり見てると何かに犯されそう、みたいな。
BFのコーディングには SANチェックが必要なのか
htmlで恐縮だが、 <head>タグの中に<brain>タグが書けるとすれば <brain>タグの中に書くのは確実にBFだよな、とか考えてた。
>>461 それって、HTML的にはありだけどSGML的には無理。
CDATAセクションでくくればいいんでないの
]]>の連続が普通に出てくるから引っかかりそうだな。
このスレって人がいなさそうで実はいるよなw 俺も含めて
エスケープすればええんや!
>>466 余りいろいろやりすぎるとBrainFuckらしくなるなるしねぇ。
>>467 どうせインスタンス化されるのは実体となった文字なんだからいいのでは。
HTMLのソースレベルで語ってもしかたない。
<!ENTITY prev CDATA "<"> <!ENTITY next CDATA ">"> <!ENTITY inc CDATA "+"> <!ENTITY dec CDATA "-"> <!ENTITY do CDATA "["> <!ENTITY done CDATA "]">
\
定数ロード命令があったらどうだろうか
なにそれ、おいしーの?
>>472 決めた番地にかいといてコピーすりゃいいだけじゃん。
whirlを日本語で説明してるサイトが見つからない
>476 逆に考えるんだ。 ここで説明サイトを作ればおまいが日本で一番乗りだ。
>476 というか、処理系まであるし説明自体も平易だから日本語で説明されるまでもないんじゃないの? 01 並びになるけど実質的には Operation Ring と Math Ring のコマンドが交互に並んでいるだけだから、いまいち面白みにかけるような。 しかも両 Ring に Noop があるから実際には任意の順序で並べることが可能だし。 まぁ、最短手数を考えるというのはありだと思うけど。 むしろ、実行時の Visualization にこそ、こだわるべき言語な気がする。 個人的には 3D でぐるぐる回ってるのが見たい。
シンプルさが、BFのいいところなのは分かってるが、 実用的なGUIアプリ作ろうと思ったら、何が要るんかな
BFからシステムコールを呼び出せるOS。
出力でボタンとか並べて入力でイベント受け取って・・・とか考えてたら人が書くものじゃないってことに気がついた
GUIを作ることを土台とした難解言語が欲しいなあ。 あ、その言語を作るのが難解なのか……。
部品の種類とその座標、関する諸々のイベントを書こうとしたら、 どうしても、命令数がすごいことになるもんな。 やっぱり、機械語みたいになるよなぁ。
>>484 メモリに書き込むようにするのはどうですか?
TclやHTMLを参考にして作ったら? あの辺は比較的少ない命令数で画面作れる。
BFは、命令の種類が少ないことが面白みだからなぁ。 簡単になったら詰まらんとはいえ…テキスト処理以外は手に余るね。
o (p[0],p[1])にドットを打つ x (p[0],p[1])のドットを消す これさえあれば絵は描ける
AAを出力するAA
>>488 rgb
ポインタが示す値を赤、緑、青成分にする
これでフルカラーが使えるぞ
>> 490 命令数増やすなよ o (p[0], p[1], RGB(p[2], p[3], p[4]))にドットを出力する ひとつで十分だ
GUIに少し近づいた。
今、ポインタがp[i]を指してるとして、 . … p[i]の文字を出力 : … p[i]の文字を(x,y)=(p[i+1], p[i+2])の座標に出力 の方が都合がよくね? 点が打ちたいなら文字として「.」を出力しときゃいいじゃん。
それだと「.」がドット1個じゃないフォントを採用してる環境で困る
それはそうか。 スンマセン
命令増やす必要なんてないだろ。 メモリをそのままVRAMに転送すればいい。
まあ、転送する必要もないよな。 メモリがVRAMであればいい。
[]の対応が正しくない時の挙動ってどう定義されてるの? ・構文エラーで実行不可 ・余った]からは0、[からはEOFにジャンプ ・どこまでも相棒を探しに行ってメモリぶっ壊す 仕様探したけど見つからん、未定義?
正式な仕様って無いようなもんだよね…? 一応golfのルールだと >Unbalanced brackets are a fatal error.
オリジナルのAmiga版コンパイラを見ると 余計な ] があるとコンパイラが落ちるような気がする
>498
http://en.wikipedia.org/wiki/Brainfuck#Portability_issues >Partly because Urban Muller did not write a thorough language specification, the many subsequent
>brainfuck interpreters and compilers have come to use slightly different dialects of brainfuck.
って書いてあるから仕様はないんじゃね?
そもそも、対応が正しくない時点で既に意味的に破綻してるんだから C 的な未定義扱いでいいんじゃないだろうか。
親プロセスにリターンなんて、どうよ?
C++テンプレートでBFをコンパイル時実行するテンプレート作ったんだがどうよ?
>>504 入力はboost::mpl::vector_cとして引数で渡す
出力は(結果の型)::outputでアクセスできてこれもboost.mplのシーケンスでで帰ってくる
とりあえず、お疲れ様、としか。
DS大人のBrainFuck300万本突破!
DS用のBrainfuckプログラムくらい誰か作ってそうだけどなあ。 もちろんマジコンで動かすような
教育テレビでからくり人形の特集やってるけど面白いな みてたらプリミティブな命令で処理を行うBFのことを思い出したw
+++++[>++++++++++<-]>,. 有意義
512 :
デフォルトの名無しさん :2007/09/13(木) 22:11:25
(´,ω,`)
!.!
コードの載ってるサイトなんか見てて思ったんだが、 コードをマウスで反転させて、その部分を実行させるツールなんて無いかなぁ?
IEやFxならJavaScriptで書けばいいし 選択+コピーでクリップボードの偏向を検出して 解析・実行するツールくらい簡単に作れるだろ。
>>515 ああ、クリップボードならできそうだな。thx
充実するのは周辺ツールばっかりだなw
>>122 のようなライブラリを充実したとしても使わんだろう
自分で作ることに意義がある言語だと思うし
そもそもサブルーチンの呼び出しが面倒い
>519 ならばやっぱり Macro BrainFuck だな。
便利機能を追加するのはBrainfuckの設計精神と真逆だろうが
じゃあ逆に命令減らそうぜ -と<はいらないし[]も仕様変えれば片方削れそう
無粋なヤツだ
符号化すれば2命令
十分可読で、でもあまり読みたくないという点が優れているよな
外部ライプラリ開きたい(´・ω・`)
BF的にはあれだな。 メモリ(テープ?)上の文字列がライブラリ名とかになるのかな。 拡張するってんなら難解じゃねえとな('ω`) (拡張したらBFのよさが無くなるってのは分かってるが、いい加減話題も無いだろうし。)
むしろ標準入出力を介して外部ライブラリとやりとりするのが正統じゃないか。
プログラムカウンタの増減・・・つかジャンプできればめっちゃんこらくやね
.と,の出力先を変える命令があればいいのかな
+++[>++++[>+++++<-]<-][]でファイルオープンとか
特定文字、例えばバックスラッシュを制御用文字として 「\FileOpen」を標準出力に出すことでファイルオープン、 バックスラッシュ自身の出力は「\\」で。
メモリを HDD に対応させれば BF からでもファイルを扱えるよ。
ファイルシステムから自作か…
[-]と同じ事がポインタでも出来るようになったらいいと思わん? ポインタが0でブレーク、って事だけど
bf始めたばかりだーよ 余り付き除算組んでみたーよ 機関部だけで300文字近くも膨れあがったーよ 大体上手くできたとおもたーよ 6/2=2...1と表示されたーよ orz・・・今日はもう寝る
小数点以下まで計算させようなんて思ったこともないな
...
ビットシフト演算が欲しいなー それかelse節
Cでも使ってろよハゲ
elseなんて作れるだろ
if( ){ 〜 }else{ 〜 } ↓ [ ]
ブレーンファックの各命令の形をしたブロックの落ちてくるテトリス・・・ を、ブレーンファックで組むのはまず無理だろうが・・・。 テトラミノじゃなくてペントミノになるな。
一つ初心者的な質問をしたいんだが。 [->-<]と[+>+<]って結果的には同じような振る舞いする、よな?
実装依存じゃん。
マイナスが存在するかってことかな?
オーバーフロー時の動作は未定義?
そもそも規格がないから、定義も未定義もない。
作ろうか
いらねえよ
ぜひ作ってくれ
どうせ決めることなんて少ないしコードにしようぜってことで適当に作った。 初めから順に ・プログラムカウンタの形式(つまり認めるプログラムの方向) Pは上限なしの正への一方向。下端は1。Nは上限なしの正への一方向。下端は0。Zは上下限なしの正負双方向。 プログラムカウンタの初期値を後に続ける。 ・メモリ1区画の形式 最初の文字はSなら符号付き、Uなら符号なし。 次の数字は符号部を含むビット数。無限長ならI。 最後の文字列は、まずオーバーフロー時のループを認めるならv、認めずエラーにするならe。無限長の場合はeのみ。 次にメモリの初期値が全て0なら0、不定値ならx。 ・ポインタの形式 メモリ区画と同じ書式。 ・メモリ配置 ポインタの有効値全体ならR。そうでなければ、有効値が全体と一致するようなポインタをメモリ区画と同じ書式で書き、 ポインタが無効値を指した時点でエラーならp、無効値にアクセスした時点でエラーならaを後に付ける。 ・[]の対応の扱い 実行前にチェックして正しくなければエラーにするならC。 そうでない場合は、 -まず[に対応する]が足りないとき、そこで実行エラーにするならe、プログラムの正方向の終端に飛ぶならj。 -次に]に対応する[が足りないとき、そこで実行エラーにするならe、プログラムの負方向の終端に飛ぶならj。 ・プログラムの最終命令実行後(+および[で対応する]が足りないときにジャンプした時)の挙動 終了するならE、プログラムカウンタの初期値に戻るならL。 の順で書く。 たとえば「N0S32v0SIe0ReeE」なら、こういうbrainfuckを表す。 (N0)一方向プログラムで先頭は0、初期値も0 (S32v0)メモリの区画はそれぞれ符号付き32ビット整数でオーバーフローあり、初期値は全部0 (SIe0)ポインタは符号付き無限長整数、初期値0 (R)ポインタの有効範囲に全部メモリあり、つまりメモリ空間は正負双方向に無限にある (ee)[]が対応してない場合は、見つからなかった時点でエラーになる (E)プログラムの最後まで実行したら終了 うん、これは流行らない
他によくある差異。 ・ASCIIに入らない文字が入力されたときどうするか ・127を越えるセルが出力されたときどうするか ・改行文字をどう扱うか(CRLF<->LFのような変換を行うか否か) ・入力がEOFに達したときどうするか(0を入れる、-1を入れる、なにもしない)
その辺はBFの仕様と言うより標準入出力の仕様のような気がする
非同期入力は無し?
556 :
55 :2007/10/31(水) 03:01:38
557 :
55 :2007/10/31(水) 03:02:45
558 :
55 :2007/10/31(水) 03:03:28
間違えて2回書きこんだけど気にしないでorz
うpに全く反応なし。おそろしいね
過疎だからなー。
いや、気にしちゃいけないんだろうと思ってね。
.NET対応まだ?
Turbo Brainfuckまだー?
.NETって具体的にどうなればいいの?
565 :
デフォルトの名無しさん :2007/12/14(金) 20:25:24
Brainf*ckはネタなんかじゃない!
568 :
aaa :2007/12/17(月) 02:55:54
aha. A tak poza tym?
non, ista alama.
in BrainFuck, please
+- -+ オセロが出来るな
>+++[->+++++[->+++++<]<]>>.----------.<+++[->++++++<]>.----.
まあネタも無いしな。 誰かが7行プログラミングスレに行けよ。 まだ、あっただろ?あのスレ。
sage
脳姦という別名があるじゃまいか
外人がいるところでいうのはやめた方がいいかもな。 新庄もコーヒー飲んでニガーっていったらマジで殴られたらしいw
ニガーは黒人に対する蔑称だっけか?
#!/usr/local/bin/bf >+++++++++++[->++++++<]>+.<+++++++++++[->++++<]>.-.++++++.<+++[->-----<]>.+++++++++.++++++.<<+++[->++++++[->----<] <]>>+.<<+++[->++++++[->+ +++<]<]> >-.+++++.---------.-----------.<+++++++[->------<]>-.<+++++[->-----<]>-.<<+++[->+++++++[->++++<]<]>>.<+++[->-----<]>.<+++[->++++++<]>+. ----.<+ ++++++++++[->------<]>---.<+++++++++[->++++++<]>+++.++++++++++++.-------.-. >++[->+++++<]>..>>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++++>-] <.>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-]>++++++++[ <++++>-]<+.[-]++++++++++.
なんだよその一行目はw
噴いたw
しかもぜんぜん HTML じゃねーし
Unixのシェルスクリプト用の記述だろう。 以下のソースを何のソフトで実行するか指定している。 詳しくはググれ。
>>585 知ってるけど、bfがそこまで大層な扱いを受けてるのに噴いたよ俺はw
"#" が行コメントの開始になる言語じゃないと使えないんじゃないの?
一行目に # があったら無視するというアドホックな対処している言語も多い
>>585 キーワードが分からんとググれんだろw
>>587 +-,.[]<>以外をコメントとみなす処理系なら問題ないな
#で始まる行を空白文字に置換する Brainfuck Preprocessorを通しているから無問題
シェルスクリプト 一行目 とかでググれば一発じゃないか。 それくらい考えれば良いのに。
それで出てくるのか shebangで検索しないと駄目かと思ったんだ
スレ違いだけどどこかで見た Befunge のソースが #!/var で始まってて吹いた
#!/var って何を目的に
どこのサーバですかww まあアリだな。
#!/dev/null
一応解説しとくと、Befunge的に # ... 次の一文字を読み飛ばす ! ... 否定(でも読み飛ばされるから関係ない) / ... 値を2つpopして割り算してpush(スタック空だと何もしない?) v ... プログラムカウンタの下向きにする だから、 #!/var/... だったら、 v の下の文字から下方向に書いてあるコードが普通に実行できる (#!/bin とかだとうまく動かない)という話ね。
#!/v/../bin/ ならおkってことか
(・∀・)ベフンゲー
shebang ってシェルが解釈するから言語とは関係ない …と思ってたんだが違うの?
シェルが解釈して適当なプログラムを起動するが、 割り当てられたアプリケーションは一行目から読むわけで、 shebangを知らなければエラーになるだろ。
602 :
600 :2008/02/03(日) 01:05:10
ttp://www.jmuk.org/diary/2007/03/01/0 >shebang 行の解釈は execve(2)、つまりカーネルが行なう。
>やったことがないなら man execve してみるといいと思う。ちゃんと解説してあります。
だと。シェルはカーネルに丸投げするだけみたいだ。
つまり、1行目を除いてからアプリに投げるカーネルを作ってやれば、おk(違
#勉強になった。
引数としてファイル名を渡すだけだから、それは難しくないか
shebangが付いてる可能性があるスクリプト言語はたいていコメントが#だよ。
606 :
デフォルトの名無しさん :2008/02/03(日) 12:52:03
>>604 URL開いたらブラウザが固まって強制終了して焦ったぜ
再起動したら直ったけど
軽快な処理で(・∀・)イイ!
>>605 スクリプト言語でなくてもインタプリタがあるならshebang使いたいじゃん
HaskellとかSchemeとか
そういや、D言語もshebang対応してるな
ストリームでソースを読み込んでいってループしていない、あるいはループが閉じたら その時点で評価を開始していったらマルチコアを活用できるな。
(・д・)
611 :
デフォルトの名無しさん :2008/02/24(日) 11:38:33
shebangでここまで盛り上がれる言語もすごいw
いや、でも、shebang が言語仕様に含まれるかどうかって興味深くね?
BrainFuck という言語の特性上含まれるはずはないんだけどさ。
現実には、
1. 多くのシェルスクリプト系言語:
カーネルが shebang を読む => # で始まる行がコメントなので無視
2. Ruby, Perl など(他にある?):
カーネルが shebang を読む => shebang 行だけ特別扱い 参考:
ttp://ujihisa.nowa.jp/entry/0e49c6a525 3. その他
(エラー・実装依存 etc...)
くらいになるのかな?
言語仕様に忠実に作ってるときちんと動かせない、とかいう話だと、
(HTML + ) Javascript っぽいけど。
拡張子で判断するWindows最強。まで読んだ
前スレ見てたけど 月刊Interface2002/9読んでみたいなー バックナンバー頼んでみようかな
適当なテキストを出力するbfコードを 生成するソフトとかってない? 単純に文字コードになるまで+してく、 とかじゃなくて、在る程度短いコードを作るやつ。 javaアプレットで作ったのを載せてたサイトが あったんだけど、今日久しぶりに見たら無くなってて
そんな実用的なものは BF 精神にふさわしくない。
インタプリタって実用的だよね
つまりインタプリタも使うな、と
男は黙ってハンドアセンブル
考え始めて半年でやっと quineができたw ++ ++ ++ +[> +++++++<-]>[>+>+<< -]>------>>+[<+>-]< -- -- -- -.
+ としか出力されない。
って、そういうことかw うまいな。
[]の中に[]をネストできますか?
できる
とんくす^^
このスレで普通の質問を久しぶりに見たw
お前のBFはMS製か何かかw
{@} の中に♂をネストできますか?
>>631 あなたにはできません。でも俺にはでき(る予定)です。
[]の中に][をネストできますか?
>>633 ][はネストできなくなりました /// か IIcで我慢してください
Appleかい
[///]
brainfuckでこの程度のソフトを作れって事だろ
もう関係なくていいよ
違うな、そのソフトでbrainfuckインタープリタを作るんだ
>>641 数値がチャーチ数でしか扱えないので流石にイヤ。
教会?
gglks
いや、分かってて、だから
ヘビメタ
それを言うなら、 ggrks ではないだろうか?
昔はRTFM 今はggrksか…
anarchy golfのnukoって人何者だ? brainfuckでいつも挑戦してるが…
anarchy golf て 3 の倍数でアホになって 5 の倍数で犬になる奴か。
それはT-BOLON歌ってる人だw
++++++++++[>++++++++++[>+>++<<-]<-]>++++++[>++++++<-]>+.>>+++++[<+++++>-]<--.<++++++++.[>-<-]++++[>++++<-]>+++. 3年ぶりくらいにBF書いたよ。 BFじゃ日本語出力できないと思ってたけど全スレで既に日本語を出力するのが出てたね。
むしろ何故できないと思うのかが解らないが、とりあえず日本語使うなら文字コードぐらい書いといてくれ
]で条件判定は不要に思えるけど単に高速化の為? [ ]のペアの位置情報持ってたらスキャンが減って処理系が少し速くなりそうだな。 誰が速度に困ってるんだという話もあるが。
]での条件判定を省略すると、「対応する]の*次*にジャンプ」と表現しないといけないから、 これを嫌ったんじゃないかと勝手に想像 ループのたびに括弧の対応を調べ直す処理系はひどいだろw せめて抽象構文木くらい作れと
>>655 >ループのたびに括弧の対応を調べ直す処理系はひどいだろw
俺の作ったインタプリタは・・・(´・ω・`)
抽象構文木なんか作ったらインタプリタじゃねーよw という定義が主流な時代があってな……
移動するたびに数えながら・・・そうか、ひどいのか。。
リファレンス実装からしてそうなってるし
最近ようやくifができるようになた ,[>+>+<<-]>>>++++++++[<-------->-]+<[>]>[<<.<] ここまでくるのに1ヶ月かかった。 どうでもいいが、 + → p、- → m、< → l、> → r、[ → s、] → e、, → i、. → o って書きなおすだけで 英語の暗号っぽくなるな。
置換ネタは前スレでさんざんやったので勘弁してくれ。
error
萌えキャラに置換してくれ
429 :デフォルトの名無しさん :sage :04/10/13 23:27:54 新言語 neko mimi Fu**♥ ・1レス内に全命令のリファレンスが入る素敵な言語。 ネコミミ! ポインタをインクリメント ネコミミモード ポインタをデクリメント おにいさま ポインタが示すメモリ位置のデータをインクリメント 私のしもべー ポインタが示すメモリ位置のデータをデクリメント や・く・そ・く・よ ポインタが示すメモリ位置のデータを出力 フルフルフルムーン ポインタが示すメモリ位置のデータに入力 キスキス… ポインタが示すメモリ位置のデータがヌルなら対応する キス…したくなっちゃった… までジャンプ キス…したくなっちゃった… ポインタが示すメモリ位置のデータがヌルじゃないなら対応する キスキス… までジャンプ
↓長門
#…今指すメモリに西暦の上2桁入力 次のメモリに下2桁 次のメモリに月入力 次のメモリに日入力
# > >[> > >+<<<-]> > >+[<+++++++++++++>-]+++++<[> >+>+<<<-]> > >[<<<+> > >-]<<[>> +>+<<<-]> > >[<<<+> > >-]<<[->-> >-<<[[>+<-]> >+<<]>[<+>-]>[<<<<[> >+>+<<<-]> > >[<<<+> > >-]> >+<+]<<<]>[>+<-]<<[>+>+<<-]>[<+>-]> >[<->-]> >[<<<<+> > > >-]<<< [-]<<<<<<++[> > > > >+<<<<<-]> >+++++[> > >+<<<-]> > > >+++++++<[> >+>+<<<-]> > >[<<<+> > >-]<<[> >+>+<<<-]> > >[<<<+> > >-]<<[->-> >-<<[[>+<-]> >+<<]>[<+>-]>[ <<<<[> >+>+<<<-]> > >[<<<+> > >-]> >+<+]<<<]>[>+<-]<<[>+>+<<-]>[<+>-]> >[<->-]> >[<<<<+> > > >-]<<++++++++[<++++++>-]<. 今日の曜日を計算 0…月曜日 1…火曜日 ・・・ 6…日曜日 閏年の厳密な計算が面倒だったので2008〜2011までしか通用しないのと、 除算は前スレの誰かのを流用しただけなので、もっと短くできる。(メモリを破壊してもいいので)
669 :
デフォルトの名無しさん :2008/05/08(木) 00:08:34
【Cとかのソースをbfに変換するソフト】 って、bfを極めないと無理だよね。。。 if文とかややこしすぎるし
と、いうより意味がない
逆なら簡単だけどな
>>669 別にbfを極める必要は無いと思うけど、Cのフルセットのコンパイラを書くだけの根性が必要だな
bfの入力が良く分からないんですがjsでの実装だと inputのeditコントロールに hi! と入力し ,. だとhが表示されて ,.>,. これでようやくhiが表示されるけどあってます? ,のたびに入力させたいのですが そういうものではないですかね?
>は必要ない
,.,.でhiになる
少なくとも
>>565 では
>>674 ありがとうございます
自分の勘違いでした
その辺はBFじゃなくて標準入力の仕様
そんなことはない
どう考えてもBFの仕様
#include<stdio.h> ↑これってBFコードだったんですね。最近知りました。
?ルーツ的な話?
>>679 短縮しろ(゚Д゚)ゴルァ!!
<.>
.
<.><.> ↑垂れた乳
よし、課題を出してみる。 ○ 入力された数字の回数だけメモリを移動する。 例)「10」と入力した場合、 >>>>>>>>>> (">"が10コ) というプログラムと同じ事を行う。
685 :
デフォルトの名無しさん :2008/05/13(火) 23:53:22
>>684 ひとまずこんな感じで 00〜99まで
>,<,>>+++++++[<------->-]<+>+++++++[<<------->>-]<<+>[<++++++++++>-]<[[>+<-]>-]
最後のところが、有り金使い切っていけるところまで行く無鉄砲なツーリストみたいだな(何言ってんだろう俺
短くしようという努力を怠ってしまった。反省。
>>686 その表現ちょっと好きかも
>,<,>>+++++++[<-------<------->>-]<+<+>[<++++++++++>-]<[[>+<-]>-]
>,<,>>+++++++[<-------<------->>-]<+<+>[<++++++++++>-]<[[>+<-]>-] なんで48=7*7-1なんてやってたんだろう('A`)
>,<,>>++++++++[<------<------>>-]><<[<++++++++++>-]<[[>+<-]>-]
>>688 コピペミスった
せっかくの良問なのにスレ汚して申し訳ない(´・ω:;.:...
沢山の人が回答してるように見えたw あと><がある。
691 :
デフォルトの名無しさん :2008/05/15(木) 11:23:49
brainfuckでif-elseはどうやるんでしょう 脳姦されすぎてオーバーヒートしそう
>>692 間違っていたから思わず書き直しちまったぜ。
で、誰か処理系の紹介書かない?
なぜvip
ここまででbrain fuckな画像一枚もなし
697 :
693 :2008/05/15(木) 17:19:11
>>696 worldのwが大文字になっていたのと、45の文字コードの説明がおかしかった。
酢漫画、後者については大幅に書き直した。
>>697 あぁ、そっちか。
俺が書いたのはifのトコだけだから関係ないや。
実際bfってどうなんだろ? 入力が気になって眠れない ループ回して,するんだろうか?
getchar/putcharと同じ
じゃあゲームっぽい物も作れるな
dクスだぜ
U arr Brainfuckerz!!!!!
704 :
デフォルトの名無しさん :2008/05/17(土) 01:14:59
命令が8個なのに6行とはこれいかに
改行端折ればいくらでも行数は減らせるし 対になってる命令もがんばればまとめられるだろ。
なんだ。1行6万文字でもいいのかよ
俺も80x7行で書いたぜ
#!/usr/bin/ruby m=[p=0]*9;eval ARGF.read.gsub(/./){';'+{?+,'m[p]+=1',?-,'m[p]-=1',?<,'p+=1',?>,' p-=1',?.,'putc m[p]',?,,'m[p]=STDIN.getc',?[,'while m[p]!=0',?],'end'}[$&[0]]}
>>705 はBFインタプリタをBFで書いたってことだろ。
あと一行79文字でそろえてるみたい
Brainfuckで潜水艦ゲーム
持ってるけどそれが何か?
俺はこのスレの747を持ってない
753は315です
ありがとうございます!!
昨日1時間かけてようやくできた。orz //右に1shift [>>+<<-]+>>[-[->>+<]<]<[>]>>>
Cのソースをギャグアセンブルしたらbf作るのもっと楽にならね?
ハハ・・・・
gag assemble?
Nice joke///
BFインタプリタ作ってるのですが ,←これの実装にgetchar()使って 実際に動いた時適当に入力する すると入力された文字列の後ろに改行コードが挿入されるようですが これはbfとして駄目ですか?
うーん、行単位入力じゃない、ほんものの一文字入力が欲しいところだねぇ。
1回入力すると 2回目以降はバッファ?が空になるまで 入力しないで良いような仕様なんですよねgetchar() bfの入力というのが0から255まで入力できる仕様なら 改行コード無視したらいけないだろうし 独自で入力を考えるしかないのかな? みんなはどうしてるのですか?
>>729 unix環境だったんでtty設定変更するようにした。(cursesライブラリでもいいんじゃないかと思うが大げさっぽいので)
windowsのコンソールプログラムではやったこと無いからわかんない
いいなあunix うにうにしたいよ まあ結局は独自機能とかつけて遊ぶつもりなんですがね
Windowsならconio.hのgetchとか ArchiveのBFI.cはgetchar()だから、改行も読んじゃうんだよな
固定観念に縛られていたようです getchもありましたぬえ
ExcelでBF作った奴いる?
VBSでなら
秀丸マクロで作ったけどさ DLL化したほうが早いだろうな
正直、正負判定とか全くわからん
738 :
デフォルトの名無しさん :2008/06/07(土) 10:14:40
そもそも、負の数は処理系によってはなかったりするんじゃないかな?
自分で負の数の表現方法を決めるんだろうが。
前スレの 14 名前:デフォルトの名無しさん[] 投稿日:02/10/31(木) 18:46 正負判定だけでこんななってしまった >>>++[<++++++++[<++++++++>-]>-]<<<[>>>+<<<[>[-[>]]>>+[<]<<-]]>>>>[-]<-[<<<->>>[-]]<<[<+>[-]]< なんだが そこらへんはどうしてるんだろう。
127より大きければマイナスか ISOには頑張って頂きたい
標準化するの? BFを? brainf**kを?
BFって何?
BoysFuck
//itoa ,[>>+[>+>+<<-]>[<+>-]>----------[>-<[-]]>+[<<<<+>[-]>>>-] <<<<<-]>>>>++++++++[<++++++>-]<[<+<+>>-]<<.>. itoaできたー。まぁ、とっくの昔に誰か作ってるけどね
BFインタプリタってアナログに作れそうだけどな。 []がちょっと難しそう・・・
アナログw それいいw ピタゴラスイッチみたいな奴希望。
具体的にどうコードを食わせたらいいんだろうな。さっぱりだ
オルゴールみたいに
テープをパンチしてそれを食わせる 1命令3ビットで表せれるから1列に3つ分の穴を開けれるようにとか
それなんてチューリングマシン?
レジスタどうすんだ
ところでメモリ1つ当たりの情報量が1ビットのBFはチューリング完全?
>>755 ほほう、いよいよアナログBFの道が開けたか?
ピタゴラスイッチのような機械でBFを実行できても、 それを"アナログ"BFと呼ぶのはかなり違和感があるような・・・。 二つのセルの真ん中にポインタを移動して値を読み取ると、 二つのセルの中間の値が取り出せるとか、 そういう機械ならアナログだと思うんだけど。
量子Brainfuckの開発がのぞまれる。
>>757 アナログな材料でデジタル処理できるようにしたのがコンピュータだからな。
そういう意味じゃ、この世にはアナログコンピュータしか存在しない。
量子コンピュータなんて理想だろうが、とりあえず現実的じゃないよなあ 流体機械でググると参考にできそうなのが出るが
物理的にbrainfuckの演算ができるからくり作れないかなあ
インクレディブルマシーンとかで作れるんじゃね?
物理的にBFするのはいいけど、動力を何で供給するかが問題だな。 無限ループもありうるからピタゴラスイッチみたいな位置エネルギーは不向きだろ。
手回しがいいな
やはり、電気を使うのはいまいち萌えないな。 人力でやるのもなんだし、水道から水を供給して水力で動かすのはどうだ。
モデルを作ってから言いなさい
769 :
デフォルトの名無しさん :2008/07/08(火) 08:23:29
ちなみに俺がお願いした。 次の日に出来上がってた
ええええ、そうなのかw
寂れてるな・・・ 俺インタプリタの仕様 ・メモリは256バイト。いや、30000も使わないだろう多分。 ・入力にgetch使ってる。 ・[ は右方向に、] は左方向に対応した括弧を探しに行く。ネスト可。無かったら先頭orEOFまで行く。 ・ポインタもデータもループする。初っ端から < すれば最後のメモリに、初っ端から - すれば 0xFF になる。 ・Cの関数を簡単に追加できる。以下実装してみた拡張命令。 # 改行までコメント ~ NOT * 左シフト / 右シフト ! (デバッグ用)現在のポインタを16進数で、ポインタが示すデータを数値で出力 ? (デバッグ用)メモリのダンプ TODO ・最適化 ・文法定義ファイルを外部から読み込めるようにする。置き換え系BFを全て動かせるように。 BFを拡張するなんて無粋なのはわかっちゃいるが、 あえて無粋を極めるのもいいかも、なんて。
メモリの一部をVRAMとして使えると楽しそう。 番地って概念がないと管理が大変そうだろうけど。
ネットから拾ったFizzBuzzが動かない。
やっぱ任意で仕様選べないとダメか・・・
>>773 グラフィック弄れるのは楽しそうだ
物凄く遅そうだが
マジにbrainfuckインタプリタを作ったら意外に速いかもしれませんよ。 それで思いついたんですが、brainfuck処理系を複数仮想メモリ空間上で走らせたらどうでしょ。 brainfuckの弱いところはポインタが一つしかないことですが、それが一気に解決できるかもしれないわけで。 # 同期とか全然考えていないんで、corewarsみたいなことになっちゃいそうな気がしないでもありませんがw
>>774 それは、描写処理速度が著しく低下ようなスクリプトをBFで書くの方が大変だと思う・・・w
昨今のマシンはムダに高性能だから、マジになって作らなくても、
GDIの冗長なインタプリタでも十分対応できるそうだ ;-)
ただ、もし仮想VRAMが実装されてもタイマやcurses/kbhit的なものがなかったら、
テトリスやブロック崩しは作れないよなぁ。
>>775 ポインタを複数にすれば、メモリ空間は一つで済むんじゃない?
>>773 はゲームボーイアドバンスのメモリマップ的なイメージで考えてた。
本体ROM・RAM・VRAM・スプライト領域とカセット内のセーブ領域・プログラム領域が
0番地から最後まで、ひとつのメモリとして番地割りされてる。
http://jaco.ec.t.kanazawa-u.ac.jp/edu/GBA/hard.html
メモリマップドI/Oでええんちゃう アドレスと命令を結びつければええよ $00番地に$40を書き込めばCLSとかな
その昔「究極のRISC」なんてネタがあったことをふと思い出した 命令はmoveだけで I/OどころかプログラムカウンタやALUまでメモリ空間にマップされているという
続き 複数のポインタを管理するためのポインタ、つまりポインタのポインタは 標準機能だけでも十分実現できるしね。 やっぱり拡張機能として一番欲しいのはタイマやファイルなどを扱えるハードウェアI/O制御かな・・・。 グラフィックはインタプリタの仕様の話であって、メモリマップをビットマップ描写させればすぐ出来るし
書き込む前に更新してなかった
>>773 ,
>>776 ,
>>779 は俺です
グラフィックを実装したインタプリタだと、いろいろ遊べそうだし、
面白そうだからざっくりと作ってみるよ。
やっとその辺のBFソースが普通に動くようになった
スキップの処理が微妙に間違っていたらしい
ループ時のアドレスをスタックに積むように修正
あと入力を何で取るかで微妙に挙動が変わるなー
やっぱ標準のgetcharなのかなあ
つーか急に賑わってきたなw
みんなネタ振り待ってたのか
>>780 おーがんばってくれー
期待してるぜ
名前がやばいのでこんな対案 ・BrainHack - 脳弄 ・BrainLuck - 脳幸 ・BrainMuck - 脳糞 ・BrainSuck - 脳啜 ・BrainBuck - 脳鹿 ・BrainRuck - 脳皺 ・BrainTuck - 脳詰 ・BrainYuck - 脳嫌 ・BrainDuck - Quack!
>>772 「# 改行までコメント」は、改行文字によってプログラムの挙動が変わるので
ルールとして規定するのは好ましくないんじゃないかなあ。
今の実装だと命令以外の文字は全てコメントとして扱われるし
無駄に命令を増やしたところで、その恩恵を求めるには希薄だと感じた。
メモリマップとか難しいことしなくても、標準入出力を介してXあたりと通信すればいいんじゃね?
>>784 ハナからみんながUNIX環境だったら苦労はしないさ
まあ、メモリにVRAMを乗っけるとポインタを動かすだけでも大変だから、
アセンブリのINT的な雰囲気でやろうかとも思ってきた。
じゃあXじゃなくて自前の描画システムでもいいけど どっちにせよ言語仕様に標準入出力があるんだからそれを使わない手はないと思うんだが
両者とも話してる次元が違いそうだなw
>>785 氏は機械語レベルで組み込み系のような「仮想チューリングマシン構築」の話してるのに、
>>786 氏は「インタプリタとして動けばいいじゃん」とカーネル以上でしか会話してなくて、
仮想ハードウェアのエミュレーションまで考えが至ってないように見える。
# ちなみにメモリマップを直接制御することは珍しくもないし「難しいこと」じゃない。
OS開発者とアプリケーション開発者の会話のようだw
久々にスレが伸びてて感動した。 VRAM弄るっぽいのはあってもいいかも 画像を書けるのは楽しいかも
単に静止画を使いたいだけなら 出力をリダイレクトさせれば 画像ファイルを吐くことは可能 リアルタイムアニメーションは無理だけど
791 :
773 :2008/07/16(水) 03:33:57
これは面白そうだな こういう仮想ハードってのはわくわくさせられる
なんかうまく動かないソースがあると思ったら メモリ30000の環境が前提のソースだった やっぱり標準に合わせないとダメかね・・・
適当にソケットでもつなげばいいんじゃない。
うまいこと入力と出力先していしてXサーバー見たいなことやらせればいいじゃん
他スレで「windows.h使えばいいじゃん」つってる奴らと大して変わらんな コマンドやソースを貼ってすらないところを見ると、何も考えてないただの煽りだろうけどなw
コマンドやソースを貼ってすらない煽りが現れたぞ
Brainfuckのコードを書くのにはやたらと時間を食うから、 本当にうまく行くのか思考実験を繰り返してから 実際のコーディングに移るほうがよいにきまっているではないか。 そこらのCなどと比べられては困る。
>>800 770あたりからログを読んで来い。
話の流れも理解できてない奴が知ったような口を利くから混乱するんであって。
>>770-801 〜ここまでのあらすじ〜 カオス。
BFグラフィックが使えたらいいな→じゃあ仮想環境作る→サイトできた/(^o^)\
↑ ↑面白そうだ
│ ↓話てる次元が違いそうだなw
標準入出力でXサーバを弄れ←X用に作ってるわけじゃないだろ
↑ ↓BFでエンコするつもりか(?)
だったら今の実装のままでも画像吐ける←ストリーミング ↓ソケットつなげ
↑リダイレクト先なに?
Xサーバみたいなことやれ→ふりだしへ
└─────────────────────────────────────────┘
↑いや、お前らまとめて好き放題言うくらいならコマンドやソース貼れ
↑BFとCを比べてもらったら困る←ログ嫁
↑今このへん
夏の果実に群がる蝿か
夏の果実 まで読んだ。
ナイス脳内正規化
>>793 メモリ30000環境って公式bfi.cの
char a[5000], f[5000], b, o, *s=f;
を
char a[30000], f[30000], b, o, *s=f;
に書き換えてcc bfi.cするだけだよね?
あ、ここもか if( p<0 || p>100) puts("RANGE ERROR"), exit(0);
過疎すぎる
まあな
だが待て、俺も居るぞ
null pointer exception
Brainfuckある程度コード書けるようになったから 次は Lazy K に挑戦・・・ わからなすぎワロタw
Befunge 楽しいよ。 Lazy K や BFと比べると命令が豊富すぎるけど。
>>814 Wikipediaで見てきたけどダメだこれ。命令が多すぎて覚えきれねぇ。
Whitespace も文字は3種だけど命令は20個以上あるもんな。
Whirl はコマンドは 0 1 だけど命令テーブル見なきゃいけないし、
Minus は命令「-=」だけだけど、特殊変数がたくさんあるし。
wierd <
http://esolangs.org/wiki/Wierd > は純粋に 6 命令かも。(NOP入れて7)
BFの命令タイプを完結にまとめたら ポインタの設定とそれの差す値の加算減算、標準入出力からのデータ受け渡し、 条件判断による下方ジャンプ、上方ジャンプの4つに集約されると思った。 難読性の低下を無視すると、こういうモデル言語も作れそうだ。 【言語仕様】 アドレス空間 0x00-0xFF。ソース内では番地を"\$[0-9a-fA-F]{2}"と表記し指定。 全メモリは起動時に0x00で初期化される。命令毎に;を末尾につける。 意味を分断しない位置には空白改行OK。コメントは#〜[LF]。 ""で囲まれたものは文字列として認識され、実行時に配列に展開される。 【基本命令(4つ)の例】 add $01,10[,...] アドレス$01に10を加算する(負の数を加算することも出来る) 第2オペランド以降は配列のように代入される。 str $01,10 アドレス$01を基点とし、値が0x20-0x7eなら最大10字印字、else 最大10字入力 set $00,FG アドレス$00の値が0x00ならjmp *,FGの直後に飛ぶ jmp $00,FG アドレス$00の値が0x00以外なら、set *,FGに飛ぶ 【オペランドの書き方いろいろ】 add $00,$01 # アドレス$01の値を$00の値に足し、$00番地に代入する add *$00,1 # アドレス$00をポインタとし値をアドレスとして扱う
【Hello,world!を出力するスクリプトの例】 add $00,"Hello,world!\n"; str $00,0xFF; 1行目"Hello,world!\n"は、実行時に配列に変換され add $02,0x48,0x65,0x6C,0x6C,0x6F,0x2C,0x77,0x6F,0x72,0x6C,0x64,0x21,0x0A; として実行される。全てのメモリは0x00で初期化されているので、文字列がそのまま代入される。 ふと思って作ってみたインタプリタはここまで可能。 んで add $00,~$01 # $01をNOT演算(ビット反転)して$00に代入 add $00,$01|$02 # $01と$02をOR演算して$00に代入 add $00,$01^$02 # XOR add $00,$01&$02 # AND てのも考えたけど、ここまで来るとほとんどアセンブリだな・・・。スレ汚しスイマセン。
チューリング完全じゃないのが致命的
>>817-818 とっつきやすくて面白そう。インタプリタが出来たら見てみたい。
>>819 チューリングマシンのシミュレーションは出来そうだからチューリング完全じゃないの?
純粋に致命的である理由を聞きたいかも。
メモリが有限の機械ではチューリングマシンのシミュレートはできない 実際の機械ではメモリ有限だけど、少なくともBFやCなら メモリ空間をどれだけ広く取っても言語として破綻しないから 「チューリング完全」と呼んで問題ないと思う
なるほど。確かに見てみると「言語仕様」としてメモリが有限設定されてるから駄目になるのか・・・。
>>817 の「アドレス空間 0x00-0xFF」を言語仕様じゃなく「インタプリタが扱える範囲」として書いたら、
チューリング完全としてちゃんと動きそうだね。
(公式のBFインタプリタも暗黙のメモリ範囲があるけど、言語使用上は定義されてないし)
よく考えてないけどアドレスに定数しか使えなかったらチューリング完全にはならない気がする。
例えば↓って
>>817 の言語では不可能じゃない? 俺が言語仕様を誤解してるのかもしれないけど。
# 入力された文字列を反転して表示
>,[>,]<[.<]
824 :
823 :2008/08/12(火) 00:17:33
あ、*$00みたいな感じでアドレスに変数を使えるのか。失礼。 ところで、アドレスに定数しか使えなくても多倍長整数が使えればチューリング完全なのかな。
>>817 逆の考え方をすると、基本命令が最も少ない言語の一つで、
ある程度の可読性を保持してると言えるんじゃないかい。
>>823 のBFスクリプトをbashやコマンドプロンプトからやってみたけど、
これってヌル文字を代入できずに永遠と入力待ちにならない?
だから、ナル文字を入力するんじゃない。入力を閉じるんだ。 って、これじゃC初心者スレのネタだな。 BFの入力が1行バッファ入力に縛られるのは本来おかしいんじゃないのかな。 まぁ、処理系が改行文字を無視してくれるのなら処理できそうだが。
827 :
デフォルトの名無しさん :2008/08/12(火) 17:43:58
>だから、ナル文字を入力するんじゃない。入力を閉じるんだ。 とりあえず晒しておく
NULLじゃなくてEOT(Ctrl+D)では
EOTだと0x04になるから いつまで経ってもループから 抜けれん気がする 間違ってたらスマン
831 :
823 :2008/08/12(火) 18:51:35
EOFが来たときにNULを入れる実装か、なにもしない実装なら問題ないんだが、 Cのgetcをキャストして代入する実装だと終わらないだろうね。 俺は、BFコード側でEOFの値を選べる、なにもしない実装が好きだな。 メモリがmod 256で、EOFが255になる実装なら >,+[>,+]<[-.<] でいけるかな、と。
キーボードのCtrl+Dを押す ↓ ターミナルにEOTが送られる ↓ EOTを受けて、ターミナルが行バッファの内容を即座に送り出す ↓ BFインタプリタが呼んでいたreadが返る ↓ readの戻り値が0の場合(行頭でCtrl+Dを押したか、二回連続でCtrl+Dを押したとき)、EOFに到達したと解釈 ↓ BFのカレントアドレスに何もセットしないで(仕様によっては0をセットして)入力命令","が実行終了 UNIXの場合。こんなんで合ってますか><
話をぶった切ってすみません。 片方の方向にだけ、無限に長いテープでチューリングマシンを実行したとき、 それはチューリング完全なのかな?
n > 0 のとき f(n) = 2n n < 0 のとき f(n) = -2n-1 とでもすれば等価かと
両方に無限でも片方に無限でもセルの数は同じだしな
どちらもアレフ0だからね。ついでに言えば、一次元のテープを二次元に拡張しても(テープじゃなくて最早シートだが)アレフ0だし。
そして、時代はアレフ1へ・・・
セルの数がアレフ0だから持てる情報はアレフ1だよ
そのうち実際に出現し得るパターンの数はアレフ0だけどな
オウム心理教スレですか
誰かが言うと思ったわ。
>>838 アレフ1じゃなくてベート1
アレフ1 = ベート1 という主張が連続体仮説
アレフ(n+1) の定義が 2^アレフn だろう その中間にあたる濃度があるかどうかはまた別問題
というか、板を勘違いしてた・・・orz
>>842-844 そんなにいろいろあるんだ。
俺、アレフ0とアレフ1があるだけだと思ってた
+ あッ - んッ > ああッ < んんッ! , 入ってるの感じちゃうぅ! . イク!イっちゃう! [ してぇ!お願い! ] やめないでぇ! あッあッあッあッあッあッあッあッあッあッしてぇ!お願い!ああッ! あッあッあッあッあッあッあッあッあッあッんんッ!んッやめないでぇ!ああッ! あッあッあッあッイク!イっちゃう!あッあッあッあッあッあッあッイク! イっちゃう!んッんッんッんッんッんッんッんッイク!イっちゃう!んッんッイク!イっちゃう!
つまらんのう
befungeのビジュアルインタープリタがほしい ってここBF板だった
BF板じゃない、プログラム板のBFスレだ。
BF板…だと…
阿久女イクで実装できそう
自演宣伝がウザいからな、あのソフトは
ティエラと同じ理論でBFコードを進化させられないだろうか?
なにそのティエラ?
856 :
デフォルトの名無しさん :2008/09/17(水) 17:49:26
携帯FLASH版ってPC版と比べて違いある?
>>856 そもそもPC版ですら実装に違いが一杯なのに何を言うか
規格すらねえからな
いい加減規格くらい作れよなカス じゃなくて作ってください。
そういやこんなんあったね。
ag2+
863 :
デフォルトの名無しさん :2008/11/08(土) 19:43:27
あげ
こうして見ると定期的にBFを拡張しようとする凡人って出てくるのな しかも中途半端に終わるっていう 単純であるが故に価値があるのにそれに逆行するから当然か
自分は何もせず、頼みもしない感想を つらつら書いてる奴よりよっぽどマシだけどな
頼みもしない独自拡張を批判されて腹を立てる拡張マンより よっぽどマシだけどな
久々に伸びてると思ったら・・・ 論評だけのレスは確かに見飽きたわ
秋だからしょうがない
夏だから〜は良く聞くが秋も駄目なのか。
もう最近は長期休暇のときに厨が多く現れるというのは違うよ
>>870 Urban Muller神が降臨なさったんですね。わかります。
ニートは年中居るからな ところでBFをCGIとして実装してみたんだが レスポンスヘッダ書くのも面倒臭すぎて 妙に笑えることになってきたぜ
で BF ソース吐くコードジェネレータ作って、俺は何をやっているのか、と落ち込むと。
それもまた一興 何も考えずエロゲやってる奴よりマトモさね
残念だったな! エロゲでなくネトゲだ パンツゲーなどと言われてるからエロゲみたいなもんだが orz
ふと思ったけどBFの処理系に食わせる前にCのプリプロセッサを通せば意外に使い物に・・・ならないかやっぱり?
CPPは単体で色々できすぎてしまうからなあ。
拡張子.cppをC++と読んでしまうようになったのはいつからだろう・・・
cxx
良いなコレ
punctfuck.rb
$___,@_,@__,$_=(@@__="")=~//,?#=~/$/,->(_){_<(__="####"=~/$/)**__&&(@@__<<
_;@__[_+@_])},[*$<]*@@__;@__[$___];$____,$_,@___,$__,@__=$_[@_+($_+?!=~/!/
)..-@_],$`,[],[],->(_){(__=$_[_];__=~/[><+\-\.,]/?$__<<$_[_]:__==?[?(@___,
$__=$__,[]):__==?]?$__=@___<<$__:__==$\?$\:_)&&@__[_+@_]};@__[$___];@___,
$_,@@_,@__=[],[],$___,->(_){$_[@@_]||=$___;({?>=>->{@@_+=@_},?<=>->{@@_-=
@_},?+=>->{$_[@@_]+=@_},?-=>->{$_[@@_]-=@_},?.=>->{$><<@@__[$_[@@_]]},?,=>
->{$____=~/^./&&($____=$';$_[@@_]=@@__=~/#{((__,=[*?/..?:]&[$&];__)||(__,=
[*?@...?[]&[$&];__)||(__,=[*?`...?{]&[$&];__))&&__!=?{?$&:'\\'+$&}/)},$\=>
->{$\}}[$__[_]]||->{$_[@@_]!=$___&&(@___<<[$__,_-@_];$__=$__[_];@__[$___]
*@___,($__,_)=@___);""})[]&&@__[_+@_]};@__[$___]
■[Ruby] 記号だけで brainfuck インタプリタ
http://d.hatena.ne.jp/ku-ma-me/20080626/p1
Rubyすげーw
おー、楽しみだ 目次だけでワクワクしてくる 1-2 サンプルプログラムに特化した言語、HQ9+ 1-3 8つの命令ですべてを記述する言語、Brainf*ck 1-4 決して印刷できない言語、Whitespace 2-1 きらめく星空のような言語、Starry 2-2 Unicodeを悪ノリした言語、Bolic 付録 Esoteric Language傑作選 新次元のプログラミング言語、Befunge 文字を一種類しか使わない言語、Wierd 英文学的プログラミング言語、Shakespeare 数値を「調理」する言語、Chef 関数だけでできている言語、Unlambda ちょっと草植えときますね型言語、Grass 1キロバイトでコンパイラが書ける言語、False8 0次元のプログラミング言語、NULL A, AAA言語、AAAAAAAAAAAAAA!!!! 普通の言語に似て非なる言語、INTERCAL 地獄から来た言語、Malbolge 風にたなびく煙のような言語、KEMURI データをドライブする言語、Taxi4
これは面白そうだ けど普通に値が張るな…。
印刷できない言語を印刷物で紹介しようとする時点でbakaだと思うw
組み込み系のCしか使った事ない俺でも読める? この際だからRuby勉強しようかな
>>884 にある中で他にスレがあるのは草言語だけか
スレばっかりあっても仕方なくね? 使い道がない 面白いとは思うけど
このスレも使い切るのに二年はかかりそうだしね。 作るとしたら esoteric language 総合がいいところか。
こんな感じ? 【ネタ言語】esoteric language総合【実用性無視】
プログラミングという言葉を入れないと寄って来ないのでは?
brainf**kは単語的にそこそこ浸透してると思うがesolangはどうだろう BFスレ探しても見つからずに、けっきょくBFスレを作っちゃうのでは 個人的にはなんでもまとめりゃいいってもんでも無いと思うが
面白そうだなw Ruby触ったことないけど
拡張子.ws で検索しても、ワンダースワンのROMファイルしか出てこないな。
>>893 組み込み系言語スレみたいに頭にBrainfuckなりWhitespaceなり入れれば大丈夫じゃないかな
【 】Whitespace【 】
>>883 >>884 で言語はキーワードは出てしまってるし(笑)
ネットで調べて面白いねーって言うレベルの言語だし
本で買ってみようとは思わないなあ
>>898 でも、StarryとBolicはオリジナルだろ?
>897 それを言うなら だろ?
902 :
901 :2008/12/10(水) 17:21:24
oi ミス おい 改行しかないじゃねえかYO!
Ha-Ha-Ha …まさか確認されるとは思ってなかった
総合スレにするなら 『BrainFuck&難解プログラミング言語総合スレ』 というタイトルはどうでしょう? 検索で引っ掛かりやすいだろうし、結局メインはBFだろうし 長すぎ?
変態の変態による変態のための変態言語スレ
なんだいもう次スレの話?
>>904 BFに限定すると他の言語では遊べないし、
総合なんて曖昧な表記だと、その定義で論争が起きそうだ。
かといって過疎スレ立てまくるのもアレだし、難しいところよね。
bf & 類似言語スレ
にして
>>1 に↑の言語リストとbfの命令リスト貼ればいいよ
【Brainfuck】難解プログラミング言語【Whitespace】 でいいよ 右の方はスレ移ったら入れ替えてくってことで
BFってすごいよね。可能性は無限大。 N60-BASICを知ってから25年以上。C言語以来の衝撃受けた。最近知ったけどw
チューリングマシンを知らなかったのかと
>>910 四則演算をしている小学生に群・環・体を知らなかったのかと
微積をする高校生にε-δ法を知らなかったなのかと
お前は言うわけかw
生まれたときからBASICはじめたとして、少なくとも25才になるまで知らなかったんだろ?
過去スレ読まない人っているんだな・・・
まぁいいじゃないか。かなり衝撃的な出版だし
いくらお前にとって衝撃的でも 同じネタの重複はうざいだけ
俺に言われても
既出だったかスマソ・・・ 最近、Janeの検索の調子が悪いんだよな
検索も何もたかだか30個前のレスじゃないか…
ミスを認めず何かのせいにする辺り反省してないな
うちの大学の図書館には入荷するだろうか?
図書館に訊けよ…
読みたいならリクエストするのが図書館の使い方。
925 :
922 :2008/12/12(金) 18:04:56
プログラミング本は結構充実してるから入るかと思ったけど、 一週間ぐらいして入荷しなかったら注目してみる
注文しろ 友人の友人の友人くらいまで動員して 絶対にだ!
927 :
922 :2008/12/14(日) 12:08:02
大丈夫 通じてる
いいなーこれ。誰か行ける人マジでレポ頼む。 東京でもイベント開いてくれないかな。 ---------------------------------------------- 刊行記念トークセッションのお知らせ ---------------------------------------------- 『Rubyで作る奇妙なプログラミング言語 〜Esoteric Language〜』刊行を記念して、著者 原悠氏によるトークセッションが行われます! 気鋭のRubyist、原悠氏がお送りする「奇妙な言語(Esoteric Language)」の世界。Rubyに関心のある方はもちろん、プログラミング言語の未知の世界に触れてみたい方も大歓迎です。 「Rubyで作る奇妙なプログラミング言語の世界」 原 悠 氏((株)ネットワーク応用通信研究所) 日時:2008年12月20日(土)14:00〜16:00 会場:ジュンク書店大阪本店 3階喫茶スペースにて。 入場料:500円(定員40名)
トークセッションとか気合入ってるな というか需要あるのか?w
池袋で『初めてのRuby』の時にやってたな
あ、やっぱり行けないわ。 ちょうどその時間三宮に用事があった・・残念
ただなら行った んだけど
ワンコインくらい出せよw 東京から頑張って行こうかと考えたが仕事が入りそうで断念・・・
濃ゆそうな人が多そうで物怖じしてる 参加して大丈夫かな
>928 は深いな たったの7文字で 本人が気付いた間違いはおろか 本人が気付いていない間違い(レス番号)まで気付いている、という意味まで内包してる
じゃあ行かない
ようやく本屋に行けたので奇妙なプログラミング買って来た 数件回ったがやはり大型店舗にしか置いてないな とりあえずレポまだー?
そういやもう発売してるのか 明日辺り買ってこよ
結局、変態言語の話はおまけ程度らしいのでいってない
本買ってきた コンピュータ読み物の棚にも情報論の棚にもRubyの棚にもなくて、置いてないか、って思ったらゲームプログラミングの棚にあった。 誤植が一つあるね
48ページの 「+」と「-」 ってのはタブン 「<」と「>」
フィードバックすれば増刷(されるのか?)で直るかも
買った とりあえず帯でっけ
大学生協にて発見
esolangを語る本じゃなくて Rubyの入門の題材にesolangを使った本だった
>>949 さらにニッチにしてどうするんだと心配しちゃう俺がいる
>++++++++++[>+++>+++++>+++++++>++++++++++>+++++++++ ++>++++++++++++[<]>-]>>>++.>---.>++..>+.<<<<<++.>>>>--.< ++++.>>--.<<<<<.>>>>>++.<<.----.>++++.<<<----...
BFプログラマの月給
954 :
デフォルトの名無しさん :2009/01/04(日) 13:41:05
@を出力するコード あたたたたたたっほたたたたたたたたたたあー…ほたたたたおまえはもう死んでいる あ ポインタをインクリメント ほ ポインタをデクリメント た ポインタが示すメモリ位置のデータをインクリメント ー ポインタが示すメモリ位置のデータをデクリメント おまえはもう死んでいる ポインタが示すメモリ位置のデータを出力 ふ ポインタが示すメモリ位置のデータに入力 っ ポインタが示すメモリ位置のデータがヌルなら対応するふまでジャンプ … ポインタが示すメモリ位置のデータがヌルじゃないなら対応するんまでジャンプ
置換ネタは前スレでさんざんやったので勘弁してくれ。
みさくらや長門でおなか一杯だよ
くぎゅうは?
958 :
デフォルトの名無しさん :2009/01/04(日) 23:09:38
┏━━━━━━━━━━━━━━━━━━━━━┓ ┃ ━ ╋━╋ ╋┓┏┓ ┳┻┳┏━ ┣━┳━ ┃ ┃ ━ ┏┳┓ ┃┃┗┛ ┻━┻┃ ┃ ┃ ┃ ┃ ━ ┗╋┛ ┏━┓ ┃ ┣┳ ┏━╋━ ┃ ┃ ━ ━╋━ ┣━┫ ━╋━┃┃ ┃ ┃ ┃ ┃┏┓━╋━ ┣━┫ ┏╋┓┃┃ ━┻━╋━ ┃ ┃┃┃ ┃ ┗━┛ ┃┃┃┃┃ ┃ ┃ ┃┗┛━┻━ ━┛┗━ ┃┃┃┃┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━┛ ∩ 〈〈〈 ヽ 〈⊃ } (\___/) | | ( ̄l▼  ̄)! ! / ● ● | / / l ___\lミ/ /▲ ( 。--。 ) /■___ (( ̄)) 新年あけましておめでとうございますーーっ! (___)  ̄/ 2009年 元旦
esoteric = 難解ってなんか変な訳という気がする。 神秘とか深遠とかの方が良い。
そうですね
生きるだけなら人の一生は長い。 しかしそれ以外するには時間が足りない。 うまくなりたいなら毎日やる。 ひとつだけならまだしも 二つとなるとハードルは一気に上がる。 そしてそのことを悩むとなれば三つとなりまたあがる。 ならばいっその事悩まずに やってしまえばいい。 一人今、この体での一度きりの人生。 悔いを残すくらいなら今を生きて 今できることをすればいい。 焦っても仕方のないことだから 歩いていこうどこまでも。 「人生は何かを成し遂げるには短すぎるものだが、何もしないとすれば長すぎる」 孔子
Brainfuckで書こうぜ
これってメモリマップドIOするのはチート? レジストリや入出力系統をはっつけると結構世界が広がると思うが。
文法マスターしていい気になってる脱初心者はすぐ文法拡張したくなるから困ったもんだ。 そういった俗世の煩悩から開放されたとき真のBF道に一歩踏み入れたといえるだろう。
965 :
デフォルトの名無しさん :2009/01/07(水) 19:22:37
bf用OSというかIDE作って <<< の位置を 8bit Input (from IDE) << の位置を 8bit Output (to IDE) < の位置を status (select()みたいなもの) IDE側と通信してGUI扱えるようにならないかな
>>963 レジスタでもフレームバッファでもシリアルポートでも好きなものに割り当ててくれたらいい
BF 専用の CPU って存在してるの?
ファイルの入出力だけでも出来れば やれることかなり増えそうだが stdin stdout のリダイレクトで OK?
969 :
デフォルトの名無しさん :2009/01/07(水) 22:19:56
,>,>,>,>,>,>,>,.<.<.<.<.<.<.<. asdfpoiu uiopfdsa
>++++++++++++++[<++++++++++>-]>++++++++++++++[<++++++++++>-] <++++.>++++++++[<<+++++>>-]<<++. >>+++++++[<-->-]<.>+++++[<<-->>-]<<-. >.>++++++++[<<+++++++>>-]<<++++++.
>>968 ヒント:どんな機能を付け加えてもBFで使いこなすのは難しい
それを言っちゃあおしめえよ
せめてポインタが2本あればなぁ
なんだかんだ言って前スレでやり尽くされてるからな
難読化ツールとしての需要も既に廃れた感あり
976 :
デフォルトの名無しさん :2009/01/07(水) 23:52:12
変数2個のときは被乗数を左(0)右(2)において乗数を真ん中(1)に置くのが効率いいのかな
978 :
デフォルトの名無しさん :2009/01/08(木) 00:06:55
ありがとん
addr/data_r/data_wはあくまでプログラムフェッチ用ですよね CPU内部に大きいレジスタがあるんですかね
あーでもデータアクセス用と共用になっててもおかしくはないのう
The cw667x CPUs are using one shared memory for data and code. The Brainf*ck code always starts at address 0x0004. On initialization, the core reads the 16 bit start-adress for the data segment from the two bytes at address 0x0000 and the start adress for the stack from the two bytes at 0x0002. The data segment is growing towards the high addresses - so it is recommended to place the data segment directly after the brainf*ck code. The stack is growing towards the low addresses - so it is recommended to choose the stack start address at the end of the valid memory. Execution of brainf*ck code stops when a zero-byte is read as instruction. So there should be at least one zero-byte between the code and the begin of the data segment. The BIOS prints out "BF-CPU\n" and then executes the following loop: ,[>,]>
This reads data from the user until a zero-byte is sent. In the case of the Brainf*ck CPU bios, the data segment starts exactly after the code without any zero-byte inbetween. So when that loop has finished, the CPU directly "runs" into the code which came from the input bus. An importand detail: The other code executed by the bios before reading the program must leafe the memory zero-initialized! Only the first memory-cell might have non-zero data since it is guaranteed to be overwritten by user input. (In fact it would be ok to modify the first two bytes, since a program which actually does anything with the data in the memory must be at least two bytes long including the trailing zero-byte.) A commented version of the BIOS can be found in the file bios.bf. Note that the cw6670 core is actively zero-initializing the memory at device initialization, while the cw6671 core is initializing the memory on the fly whenever the data pointer is incremented to a new maximum value. Thus, the cw6670 has much longer initialization times; especially when simulating the core on a low level (or using slowed-down trial or free versions of tools).
次スレまだ?
+++++++[>+++<-]>[>+++<-]>-..--------..--. 俺のレス張るなwww
>++++++++++[<++++++++++>-]>++++++++++[<++++++++++>-] <++++.>+++[<<+++++>>-]<<+..----.>>++++++++[<------>-] <++.>+++[<---->-]<+..>++[<<++>>-]<<----.>>+++[<<---->>-] <<-.>++..---.++++.<.+++++.>----.<++++++.---------.++++++ +++++++++.>+.<.---------------.++++++++++++++.+.>.<--.-- -----------.----.+++.>-.<-.++++.++.>+.<+++++++++++.----- ----------.--.+++++.>.++.+.+.--.++.+++++.----.---.++++.+++.---------.
ttp://book.mycom.co.jp/book/978-4-8399-2784-4/978-4-8399-2784-4.shtml > あなたは「+-><.,[]」の8つの記号しかないプログラミング言語や、
> 空白だけで構成されるプログラミング言語があるのをご存じだろうか。
> 本書では、そんな奇妙な言語(Esoteric Language)を題材に
> プログラミング言語の作り方を解説します。
1-2 サンプルプログラムに特化した言語、HQ9+
1-3 8つの命令ですべてを記述する言語、Brainf*ck
1-4 決して印刷できない言語、Whitespace
2-1 きらめく星空のような言語、Starry
2-2 Unicodeを悪ノリした言語、Bolic
付録 Esoteric Language傑作選
新次元のプログラミング言語、Befunge
文字を一種類しか使わない言語、Wierd
英文学的プログラミング言語、Shakespeare
数値を「調理」する言語、Chef
関数だけでできている言語、Unlambda
ちょっと草植えときますね型言語、Grass
1キロバイトでコンパイラが書ける言語、False8
0次元のプログラミング言語、NULL
A, AAA言語、AAAAAAAAAAAAAA!!!!
普通の言語に似て非なる言語、INTERCAL
地獄から来た言語、Malbolge
風にたなびく煙のような言語、KEMURI
データをドライブする言語、Taxi4
codesegmentとdatasegmentが同じだった場合の挙動を想像してみた . は . が表示される ><. は > が表示される [+. は ] が表示される [+] は 対応する [ がその時点で失われているんだけど
スレにBFコードが張られた時に即、出力を知るために マウスで暗転→右クリックでコピー してから起動したらBFを実行するhta作ってみた
ブックマークレットとかUSじゃダメ?
FileFoxのプラグ印きぼん
,[>+.<-]
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
994 :
デフォルトの名無しさん :2009/01/08(木) 21:01:17
>++++++++++[<++++++++++>-]>++++++++++[<++++++++++>-] <++++.>+++[<<+++++>>-]<<+..----.>>++++++++[<------>-] <++.>+++[<---->-]<+..>++[<<++>>-]<<----.>>+++[<<---->>-] <<-.>++..---.++++.<.+++++.>----.<++++++.---------.++++++ +++++++++.>+.<.---------------.++++++++++++++.+.>.<--.-- -----------.----.+++.>-.<-.++++.++.>+.<+++++++++++.----- ----------.--.+++++.>.++.+.+.--.++.+++++.----.---.++++.+++.---------.
埋め
埋め
埋め
999
1000get!!!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。