1read 100read
2011年10月1期プログラムBrainFuck Part.3 <[+-.,]>
TOP カテ一覧 スレ一覧 削除依頼 ▼
・ 次のスレ
だめです! HSP厨は絶対に犯罪です。 Oven/Egg総合スレ part1 WEBコンパイラってないの? プログラミングに必要な細か〜い機能
BrainFuck Part.3 <[+-.,]>
1 :09/01/08 〜 最終レス :12/01/08 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/
2 : Brainfuck(ブレインファック)はプログラミング言語の一つ。 名称が良いものではないため、Brainf*ckと呼称するのが一般的。 開発者Urban Müllerがコンパイラがなるべく小さくなる言語として考案した。 実際、Müllerが開発したコンパイラのサイズは123バイト(キロバイトではない!)、 インタプリタは98バイトとなっている。 処理系には十分なサイズのbyte型配列とその要素のひとつを指すポインタがある。 ポインタを「>」「<」命令で移動させながら、そのポインタが指す値を増減させて 処理を進めていく(Hello world参照)。 実用性はほとんど無いように思われるが、これだけでチューリングマシンで実行可能な あらゆるプログラムが記述できる(チューリング完全である)とされている。
3 : <>参考サイト ttp://ja.wikipedia.org/wiki/Brainfuck ttp://vipprog.net/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E/Brainfuck.html <>実行環境等 Cソースに変換するコンパイラ(超高速) ttp://esoteric.sange.fi/brainfuck/impl/compilers/BF2C.c JavaScript版インタプリタ(超低速) ttp://cfs.maxn.jp/neta/onlineBrainFuck.html VHDLで書かれたBF-CPU(BIOS付き) ttp://www.clifford.at/bfcpu/bfcpu.html <>例 Hello world! +++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-. ------------.<++++++++.--------.+++.------.--------.>+. >>1 乙 ++++++++[>++++++++<-]>--..-------------.<+++++[>++++++<-]>.+++++.+.
4 : <>亜種 長門有希 (リンク先行方不明) neko mimi Fu** ttp://d.hatena.ne.jp/tokuhirom/20041015/p14 Misa ttp://homepage2.nifty.com/kujira_niku/okayu/misa.html あえぎ声記述言語 ttp://vipprog.tumblr.com/post/35257076/brainf-ck ※置換ネタは無意味なので控えましょう
5 : こんな本が出てるらしい ttp://book.mycom.co.jp/book/978-4-8399-2784-4/978-4-8399-2784-4.shtml > あなたは「+-><.,[]」の8つの記号しかないプログラミング言語や、 > 空白だけで構成されるプログラミング言語があるのをご存じだろうか。 > 本書では、そんな奇妙な言語(Esoteric Language)を題材に > プログラミング言語の作り方を解説します。
6 : 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
7 : Amazon.co.jp: Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~: 原 悠: 本 ttp://www.amazon.co.jp/dp/4839927847 ttp://images-jp.amazon.com/images/P/4839927847.09.MZZZZZZZZZ.jpg >内容紹介 >あなたは「+-><.,[]」の8つの記号しかないプログラミング言語や、空白だけで構成されるプログラミング言語があるのをご存じだろうか。 >本書では、そんな奇妙な言語(Esoteric Language)を題材にプログラミング言語の作り方を解説します。 [esobook] Brainf*ckとWhitespaceの本を書きましたwwww - Greenbear Diary (2008-12-08) ttp://mono.kmc.gr.jp/~yhara/d/?date=20081208#p01 > 第一部ではHQ9+から始まり、Brainf*ck、Whitespaceを題材にインタプリタ・VM方式の処理系を作る > 第二部では本書オリジナル言語であるStarry、Bolicを題材に新しいプログラミング言語の作り方を解説 > 付録では本編で取り上げられなかった13個のEsoteric Languageをちょっとずつ紹介 (Grassもあるよ!)
8 : punctfuck.rb $___,@_,@__,$_=(@@__="")=~//,?#=~/$/,->(_){_<(__="####"=~/$/)**__&&(@@__<< _;@__[_+@_])},[*$<]*@@__;@__[$___];$____,$_,@___,$__,@__=$_[@_+($_+?!=~/!/ )..-@_],$`,[],[],->(_){(__=$_[_];__=~/[><+\-\.,]/?$__<<$_[_]:__==?[?(@___, $__=$__,[]):__==?]?$__=@___<<$__:__==$\?$\:_)&&@__[_+@_]};@__[$___];@___, $_,@@_,@__=[],[],$___,->(_){$_[@@_]||=$___;({?>=>->{@@_+=@_},?<=>->{@@_-= @_},?+=>->{$_[@@_]+=@_},?-=>->{$_[@@_]-=@_},?.=>->{$><<@@__[$_[@@_]]},?,=> ->{$____=~/^./&&($____=$';$_[@@_]=@@__=~/#{((__,=[*?/..?:]&[$&];__)||(__,= [*?@...?[]&[$&];__)||(__,=[*?`...?{]&[$&];__))&&__!=?{?$&:'\\'+$&}/)},$\=> ->{$\}}[$__[_]]||->{$_[@@_]!=$___&&(@___<<[$__,_-@_];$__=$__[_];@__[$___] *@___,($__,_)=@___);""})[]&&@__[_+@_]};@__[$___] ■[Ruby] 記号だけで brainfuck インタプリタ http://d.hatena.ne.jp/ku-ma-me/20080626/p1
9 : 今までに作ったソフト - Nintendo DSでプログラミング http://void-main.org/dsprogram/index.php?%E4%BB%8A%E3%81%BE%E3%81%A7%E3%81%AB%E4%BD%9C%E3%81%A3%E3%81%9F%E3%82%BD%E3%83%95%E3%83%88
10 : ttp://www.esolangs.org/wiki/Quantum_brainfuck
11 : ttp://hoznas.blogspot.com/2008/06/brainfukexcel.html ttp://unkun.ikaduchi.com/excel_bf/index.html
12 : ttp://www.hevanet.com/cristofd/brainfuck/ ttp://jp.youtube.com/watch?v=GcDshWmhF4A #…今指すメモリに西暦の上2桁入力 次のメモリに下2桁 次のメモリに月入力 次のメモリに日入力 # > >[> > >+<<<-]> > >+[<+++++++++++++>-]+++++<[> >+>+<<<-]> > >[<<<+> > >-]<<[>> +>+<<<-]> > >[<<<+> > >-]<<[->-> >-<<[[>+<-]> >+<<]>[<+>-]>[<<<<[> >+>+<<<-]> > >[<<<+> > >-]> >+<+]<<<]>[>+<-]<<[>+>+<<-]>[<+>-]> >[<->-]> >[<<<<+> > > >-]<<< [-]<<<<<<++[> > > > >+<<<<<-]> >+++++[> > >+<<<-]> > > >+++++++<[> >+>+<<<-]> > >[<<<+> > >-]<<[> >+>+<<<-]> > >[<<<+> > >-]<<[->-> >-<<[[>+<-]> >+<<]>[<+>-]>[ <<<<[> >+>+<<<-]> > >[<<<+> > >-]> >+<+]<<<]>[>+<-]<<[>+>+<<-]>[<+>-]> >[<->-]> >[<<<<+> > > >-]<<++++++++[<++++++>-]<. 今日の曜日を計算 0…月曜日 1…火曜日 ・・・ 6…日曜日 閏年の厳密な計算が面倒だったので2008〜2011までしか通用しないのと、 除算は前スレの誰かのを流用しただけなので、もっと短くできる。(メモリを破壊してもいいので)
13 : ttp://lab.moyo.biz/garage/brainfuck/index.xsp ttp://brainfuck.sourceforge.net/results0.html ttp://jp.youtube.com/watch?v=pP1yTDEtiDE ttp://www.jmuk.org/diary/2007/03/01/0 >shebang 行の解釈は execve(2)、つまりカーネルが行なう。 >やったことがないなら man execve してみるといいと思う。ちゃんと解説してあります。 だと。シェルはカーネルに丸投げするだけみたいだ。 つまり、1行目を除いてからアプリに投げるカーネルを作ってやれば、おk(違 #勉強になった。
14 : ttp://groups.google.co.jp/group/brainfunck?hl=ja >++++++++++[>+++++ +++>+++++++++++>++ ++++++++++[<]>-]>-- .>>---.<--..<++.>+++.
15 : 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!"); }
16 : >++++++++++[>+>+++>++++++++++++[<]>-]> > >++++........<<+++.---.> >..<++.. ..>...<<+++.---.> >..<....>...<..................>..<.............>...<.................>..<<+++.---.> >.......<...>..<..>..<..>.....<..................>..<............>.....<..>..<..>..<<+++.---.> >..<.. ..>..<..>....<...>..<...>..<...>..<.>..<.>....<..>......<.>..<...>..<.>..<...>..<.>..<.>..<<++ +.---.> >..<.....>..<.>..<......>......<...>..<.>...<...>..<...>..<...>..<...>..<.>..<......>...<< +++.---.> >..<....>...<.>..<.....>..<...>..<...>..<.>..<....>..<...>..<...>..<...>..<.>..<...>.. <.>..<.>..<<+++.---.> >........<..>..<......>....<.>...<.>..<.>..<....>..<...>..<....>.....<...> .....<..>..<...>..
17 : ttp://www.nishiohirokazu.org/blog/2007/02/grinedit_6.html
18 : GZip+Base64 H4sICFJPkEYAAIGfdzVLMjdCRnIyAJWV63ECMQyE/9/MVSKUCjRuxOP+28jntc6CC0wSAcaWVmu9 Dlprj9YM6bFWX9J88I7wfplrRS6zQeDdIh5C2XksimIRg8doXR+z4ikqAJZsHBC0HpLzYJFvlw1O 1g4QlsCJ2xciMAhkOsILTJ9QCHk1jE/hGTYL//vSfVQGEMygz4PMuH7lwd4b6SDAbVTGlS9kYCc4 PcE7O4UeM0YREztwpaM4MyXkusDHVLUsCQifBNMGYJQQ44apQgmDstTdLz1hpzKUecJsS1dnOkFm WJGNHChzLobi037sC4d/bth5fGhZ9YsVk4dr2SvxbnS7vNY87j7da9VupZLVohAAoiCpPo89eYS8 mjA3su6aIcqAwCZN8gxobrdzhJF7ew5BGFs8bB5EOldpsICpTZZljRvkXeO35xHBVW/rpnN1Evv7 7lXPLLtvegrL9e4mYtdFsBrqbLdY8AMsV2nkAIrpGQswiVCqMkAmCBG9UkAgpb96iVlgdLkXC1ln nXZ98utDld7U6Pl6Zf1aiIoI+wX9T9wwVuRycLmjgQIVekuFiJbOpcn5cDSzplINPYU2/aoW9bOd gkkpOslnf3R7ISZ1wGL1zFwV8szWfv6OKY0vNa+odF7Su2HSPD5++ZsZ31FFeUKKBgAA
19 : = で式の終了。q でプログラムの終了。 プログラムが終了しないときは = → 実行 → q → 実行 で終了するはず。 123+45 * 6+ (200+ 12 *( 99 -90) / 4 )*77 *= を入れたらちゃんと17872を出すからバグはないと信じたい。 なんか凄いな、Brainfuck。C言語で int main(){char a;scanf("%c",&a);a++;printf("%c",a);return 0;} っていうプログラムも、BFにかかれば、 ,+. になっちまうんだもんな。すごいよBrainfuck。すごいよUrban Muller。 あ、あとBrainfuckをBrainf*ckって言ってるサイトが多いから、 Brainfでぐぐっても結構引っ掛かるんだよな。 だから、Brainfっていう呼び方を推奨する。 因みに日本語訳は、”魚の骨”だ。解説は要らないと思う。
20 : >>1 +++++++++[>+++[>+++++<-]<-]>>++.<++++++[>+++++++<-]>.
21 : すみませんoctaveのプログラムについて聞きたいのですが・・・ どこで聞いたらいいでしょうか??この板にくるのは初めてなもんでorz スレチですみません、誰か心やさしい人教えてください
22 : データ解析ツールoctaveを語ろう http://pc11.2ch.net/test/read.cgi/unix/1086016412/
23 : >>22 ありがとうございます!
24 : 前スレでBFの出力すぐ見たいっていう話があったので ブックマークレット作ってみることにした
25 : 無限ループ判断をどうするかで悩んだら凡人決定
26 : テストコード +++++++++++++++++++++++++++++++++++++++++++++++++.
27 : テストコード ,[.>,]
28 : BFコードが無限ループする前にJavaScriptが無限ループしてます orz
29 : 無限ループするかどうか判定するブックマークレット
30 : 無限ループする無限ループするかどうか判定するブックマークレット
31 : 無限ループするかどうか判定するブックマークレットが無限ループするか判定させてみよう
32 : javascript:(function(bf){a='........\t.\r..\n.................. !"#$%&\' ()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmn opqrstuvwxyz{|}~........................................................ ...........................................................................'; p='';m=0;b=[0];i=0;s=[];o=[];c='';z=1;d=function(e){r=e+'\n('+c+') at '+i+ '\ns: '+s.join(',')+'\nm: '+m+'\nb['+b.join(',')+']\n'+o.join('');if(z){if (!confirm(r)){z=0;}}else{alert(r);}};if(confirm('このコードは '+bf.length+ ' 文字あります ( loop 除く )\n実行に時間がかかる場合がございます')){while (i<bf.length){c=bf.charAt(i);if(c==','){p=prompt('入力(とりあえず1文字目のみ 有効)','');b[m]=(p&&p.length)?p.charAt(0).charCodeAt():0;}else if(c=='.') {o.push(a.charAt(b[m] % 256));}else if(c=='['){if(!b[m]){k=0;j=i+1;while (j<bf.length){f=bf.charAt(j);if(f=='['){k++;}else if(f==']'){if(!k){i=j+1; continue;}else{k--;}}j++;}if(j>=bf.length){return d('対応する]が見つかりません'); }}else{s.push(i);}}else if(c==']'){if(!b[m]){s.pop();}else{i=s.pop();continue;}} else if(c=='<'){if(--m<0){return d('未定義メモリ参照');}}else if(c=='>'){if (++m>=b.length){b.push(0);}}else if(c=='+'){b[m]++;}else if(c=='-'){b[m]--;} else if(c!=' '&&c!='\t'&&c!='\r'&&c!='\n'){return d('未定義命令');}if(z){d ('debug');}i++;}return d('正常終了');}})(document.selection?document.selection .createRange().text:document.getSelection());
33 : ブックマークを作成してURLに上の改行取り除いたものをまるごと保存してください その後BFコードを選択してブックマークを選ぶと実行されます デフォルトでデバッグモードで起動しますがデバッグをキャンセルすると その場所から残りをリアルタイムで実行されます とりあえず FireFox3 では動いた IE6 だと JavaScript 単体では動くがブックマークレットにすると動かない たぶんどこかの文字をエスケープする必要があると思う
34 : コントロールキャラクタ等は全部「.」表示されます 2バイトコードは試したけどまだうまくいっていないので 同様に「.」表示されます
35 : すげーけど使い勝手悪いね
36 : alertのpopupじゃなくてwindowのpopupしようとしたら popupブロックに引っ掛かったのでとりあえずalertにした感じ 改良予定としてはpopupじゃなく画面分割でデバッグ出来て ここみたいに ttp://cfs.maxn.jp/neta/onlineBrainFuck.html 実行位置が目視で判るようにしつつワークレジスタも表示出来るといいですね FireFoxだと動いてIEで動かないときってFireBugでデバッグ出来ないから困りますね orz
37 : FizzBuzzとか時間掛かるコードだと無限ループしてなくても FireFoxのwatchdogにつかまって警告でてワロス
38 : >>33 乙 IE6のブックマークレットの文字数制限 ttp://subsimple.com/bookmarklets/rules.asp The Number of Characters There is a limit to the number of characters your bookmarklet can contain. The problem is, this limit differs between browser versions. These are my findings on the number of characters supported by different browsers: Browser Max chars Netscape > 2000 Firefox > 2000 Opera > 2000 IE 4 2084 IE 5 2084 IE 6 508 IE 6 SP 2 488 IE 7 beta 2 2084 ブックマークレットを外部ファイルに書く方法(IE限定) ttp://d.hatena.ne.jp/hasegawayosuke/20080116/p1 (この設定はセキュリティ的に心配あり) 頑張って文字数削るかIE6を捨てよう
39 : 回避方法? ttp://subsimple.com/bookmarklets/tips.asp#ScriptInclusion
40 : >>32 バグというか仕様の解釈の違いだろうけど b[m]++; → ++b[m]&=255; b[m]--; → --b[m]&=255; o.push(a.charAt(b[m] % 256)); → o.push(a.charAt(b[m])); の方が安定するかもしれない (無限ループもどきが減ると思う)
41 : もうひとつあった 0の状態で[]に突入せずスルーするケースで(そういう書き方が存在するんだね)落ちてる if(c=='['){}中の if(!b[m])のelse節にs.push(i);があるけどそこは取ってif(!b[m])の前に移す if(c=='['){s.push(i);if(!b[m])
42 : よく見たらその中のwhile中のcontinueが変 JavaScriptスレ池とか言われそうなので 一通り直したらまたうpするかも知れません
43 : やはり内側のcontinueが外まで抜けることを期待してたバグだった pushの位置が原因じゃなかったんだな まさにBFコードが無限ループする前にJavaScriptが無限(ry いままで良く動いてたなwww
44 : という訳でバグ修正版うp javascript:(function(bf){a='........\t.\r..\n.................. ! "#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_` abcdefghijklmnopqrstuvwxyz{|}~................................... ................................................................. ...............................';p=c='';m=i=0;b=[0];s=[];o=[];z=1 ;d=function(e){r=e+'\n('+c+') at '+i+'\ns: '+s.join(',')+'\nm: '+ m+'\nb['+b.join(',')+']\n'+o.join('');if(z){if(!confirm(r)){z=0;} }else{alert(r);}};if(confirm('このコードは '+bf.length+' 文字あり ます ( loop 除く )\n実行に時間がかかる場合がございます')){while(i <bf.length){c=bf.charAt(i);if(c==','){p=prompt('入力(とりあえず1 文字目のみ有効)','');b[m]=(p&&p.length)?p.charAt(0).charCodeAt(): 0;}else if(c=='.'){o.push(a.charAt(b[m]));}else if(c=='['){if(!b[ m]){k=0;j=i;while(++j<bf.length){f=bf.charAt(j);if(f=='['){k++;}e lse if(f==']'){if(!k){i=j+1;break;}else{k--;}}}if(j>=bf.length){r eturn d('対応する]が見つかりません');}continue;}else{s.push(i);}} else if(c==']'){t=s.pop();if(b[m]){i=t;continue;}}else if(c=='<') {if(--m<0){return d('未定義メモリ参照');}}else if(c=='>'){if(++m> =b.length){b.push(0);}}else if(c=='+'){++b[m];b[m]&=255;}else if( c=='-'){--b[m];b[m]&=255;}else if(c!=' '&&c!='\t'&&c!='\r'&&c!='\ n'){return d('未定義命令');}if(z){d('debug');}i++;}return d('正常 終了');}})(document.selection?document.selection.createRange().te xt:document.getSelection());
45 : 最初のconfirmはうざければ取っても問題ないと思う 未定義命令もエラー出さずにスキップして良いかもしれない FizzBuzzもちゃんと一瞬で終わるようになったよ ++++++[->++++> >+>+>-<<<<<]>[<++++> >+++>++++> >+++>+ ++++>+++++> > > > > >++> >++<<<<<<<<<<<<<<-]<++++>+++ >-->+++>-> >--->++> > >+++++[->++>++<<]<<<<<<<<<<[->- [> > > > > > >]>[<+++>.>.> > > >..> > >+<]<<<<<-[> > > >]>[<+ ++++>.>.>..> > >+<]> > > >+<-[<<<]<[[-<<+> >]> > >+>+<<<<< <[-> >+>+>-<<<<]<]>>[[-]<]>[> > >[>.<<.<<<]<[.<<<<]>]>.<<<< <<<<<<<]
46 : エラー処理とか>>40 とか無視して短く書いてみた。cscript.exeで動作確認。 var prompt=function(x,y){return'a'}; var alert=function(s){WScript.Echo(s)}; //var alert=print; //for SpiderMonkey, V8, etc (function(bf){ j=[];s=[];for(i=0;i<bf.length;++i){switch(bf.charAt(i)){case'[':s.push(i);break;case']':j[j[i]=s.pop()]=i;}} o=[];p='';b=[0],m=0; for(i=0;i<bf.length;++i){ switch(bf.charAt(i)){ case'>':b[++m]=b[m]||0;break; case'<':--m;break; case'+':++b[m];break; case'-':--b[m];break; case'[':b[m]||(i=j[i]);break; case']':b[m]&&(i=j[i]);break; case',':p=prompt('>','');b[m]=(p&&p.length)?p.charCodeAt(0):0;break; case'.':o.push(String.fromCharCode(b[m])) }}alert(o.join(''));return; })('++++++++[>++++++++<-]>+.'); //})(document.selection?document.selection.createRange().text:document.getSelection()); けどまだ本体部分600字近くあるな。。orz
47 : javascript:x=document;y=x.selection?x.selection.createRange().text:x.getSele ction();w=y.length;m=i=0;b=[0];s=[];o=[];while(i<w){c=y.charCodeAt(i);if(c== 44){p=prompt();b[m]=(p&&p.length)?p.charCodeAt(0):0}if(c==46){o.push(b[m])}i f(c==91){if(b[m]){s.push(i)}else{k=0;j=i;while(++j<w){f=y.charAt(j);if(f=='[ '){k++}if(f==']'){if(k){k--}else{i=j;break}}}if(j>=w){break}}}if(c==93){t=s. pop();if(b[m]){i=t-1}}if(c==60){--m}if(c==62){if(++m>=b.length){b.push(0)}}i f(c==43){++b[m]}if(c==45){--b[m]}i++}alert(o.join()); もう一息 っつーか前スレの http://pc11.2ch.net/test/read.cgi/tech/1177988460/283 に似てきた(入力は無いみたいだけど)
48 : var prompt=function(x,y){return'a'}; var alert=function(s){WScript.Echo(s)}; //var alert=print; //for SpiderMonkey, V8, etc (function(bf){ j=s=[];b=[i=m=0];o=p="";bf=bf.split(""); for(i in bf)if(bf[i]=='[')s.push(i),if(bf[i]==']')j[j[i]=s.pop()]=i; for(i=0;i<bf.length;++i) (c=bf[i])=='>'?b[++m]=b[m]||0: c=='<'?--m: c=='+'?++b[m]: c=='-'?--b[m]: c=='['?b[m]||(i=j[i]): c==']'?b[m]&&(i=j[i]): c==','?b[m]=((p=prompt('>',''))&&p.length)?p.charAt(0):0: c=='.'?o+=String.fromCharCode(b[m]):void(0); alert(o); })('++++++++[>++++++++<-]>+.'); //})((S=(D=document).selection)?D.S.createRange().text:D.getSelection()); >>46 を勝手に短くしてみた。100文字くらい削れた。
49 : >>48 この大きさだとIE6のbookmarkletに入りますかね
50 : >>48 おおお勉強になった。でもなんかエラー出たので微修正。 javascript:(function(bf){j=s=[];o=p='';b=[m=0];bf=bf.split(''); for(i in bf)(c=bf[i])=='['?s.push(i):c==']'?j[j[i]=s.pop()]=i:0; for(i=0;c=bf[i],i<bf.length;++i) c=='>'?b[++m]=b[m]||0: c=='<'?--m:c=='+'?++b[m]: c=='-'?--b[m]: c=='['?b[m]||(i=j[i]): c==']'?b[m]&&(i=j[i]): c==','?(b[m]=((p=prompt('>',''))&&p.length)?p.charCodeAt(0):0): c=='.'?o+=String.fromCharCode(b[m]):0;alert(o) })((S=(D=document).selection)?S.createRange().text:D.getSelection()); IE7とFirefoxで確認したけど肝心のIE6がない。
51 : >>50 >>16 とか動きます?
52 : []の対応がおかしいっぽ
53 : Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~ たちよみしてきた Brainfuck じゃなくて Brainfsck だっていうのは本当なんだろうか
54 : 本家Wikipediaでbrainfsckで検索するとbrainfuckへ誘導されるから 元々あったネタなんだなと思ったんだけどどうなんだろ。
55 : >>51 j=s=[];をj=[];s=[];にしたら直った。 でもプロポーショナルフォントで表示されて残念なことになってたw
56 : 「brainfsck -brainfuck」でぐぐると7万件くらい引っかかるから あっちではそこそこ知られてるネタなんだと思うけど 出所はわからなかった
57 : >>50 >>55 IE6でも動きました!!やっと制限がなくなって嬉しいです!! すぐ結果が見れて素敵です あと必要なのはUNICODE対応くらいでしょうか
58 : ++[>++[>++>++<<-]<-] を食わせてみたら本来 00 00 08 08 となるべきところ なにもでなかった
59 : >>+++++[-<++++++>]<+[-<++>]<.>+++[-<------>]<-.........>++++++[-<++++++++>]< .>>+++++++++++[-<++>]<+[-<-->]<.+++++++++++++++.-----------------........... .>+++[-<++++++>]<+.>+++++[-<++++++>]<+.>+++++++++++[-<--->]<.--------------- --.+++.-........+.---...........>+++++++++++[-<--->]<.>+++++++++++[-<+++>]<. ...+++.++++++++++++++++.>+++[-<------>]<-...>++++++[-<++++++++>]<.>>++++++++ +++[-<++>]<+[-<-->]<.+++++++++++++++.---------------......+++++++++++++++++. >+++++[-<++++++>]<+.>+++++++++++[-<--->]<.---------------.+.++++++++++++++++ .>+++[-<------>]<-.............>++++++[-<++++++++>]<.>>+++++++++++[-<++>]<+[ -<-->]<.+++++++++++++++.---------------.....+++++++++++++++++.>+++++[-<+++++ +>]<+.>+++++++++++[-<--->]<.--------------.++++++++++++++++.>+++++++++++++[- <---->]<.>+++++++++++[-<+++>]<.................>++++++[-<++++++++>]<.>>+++++ ++++++[-<++>]<+[-<-->]<.+++++++++++++++.-----------------..>+++[-<++++++>]<+ .>+++++[-<++++++>]<+.>+++++++++++[-<--->]<.--------------.---....+++.+++++++ +++++++++.>+++[-<------>]<-..........>++++++[-<++++++++>]<.>>+++++++++++[-<+ +>]<+[-<-->]<.+++++++++++++++.---------------.....>+++++++[-<----->]<.>+++++ ++[-<+++++>]<.+++++++++++++++++.>+++++[-<++++++>]<+.>+++++++++++[-<--->]<.-- ------------.>++++++[-<------>]<. http://lowreal.net/logs/2006/09/04/3
60 : >++++[<++++++++>-] // 0 pm2 = ' ' >+++++++[<++++++++>-]<+>+++++++++> // 1 pm1 = '9' p0 = 9 >++++++++++[<++++++++++>-]<-- // 1 p1= 98 p2 = 0 [ >[-]<[->+>+<<]>>[-<<+>>]<- // 2 p2 = p1 m 1 [ >[-]<<[->>+>+<<<]>>>[-<<<+>>>]<+ // 3 p3 = p1 p 1 p4 = 0 [ >>[-]>[-]<<[>+>+<<-]>>[<<+>>-]< // 5 p5 = p4 p6 = 0 >[-]+<[>-<[-]]>[-< // 5 if (p5 == 0) then <<<[->>+>>+<<<<]>>>>[-<<<<+>>>>]<<+> // 5 p4 = p2 p 1 >]< <- // 4 p4 m= 1 <- ] // 3 p3 m= 1 > >[-]+<[[-]>-< ]>[-< // 4 if (p4 == 0) then >>[-]+<< // 4 p6 = 1 <<[-]+>> // 4 p2 = 1 >]< <<- ] // 2 p2 m= 1 >>>> >[-]+<[[-]>-< ]>[-< // 6 if (p6 == 0) then <<<<<<<.> // 0 print pm1 >>[-]++++++[<<++++++++>>-] // 2 p2 = 0 p0 p= 48 <<.>> // 2 print p0 ++++++[<<-------->>-] // 2 p2 = 0 p0 m= 48 <<<<.>>>>>>>> // 6 print pm2 >]< <<<<<- // 1 p1 m= 1 >>[-]<<<[->>+>+<<<]>>>[-<<<+>>>]< // 2 p2 = p0 p3 = 0 >+<[[-]>-< // 2 if (p2 == 0) then <<->> // 2 p0 m= 1 ]>[-< // 2 else <<+++++++++ // 0 p0 p= 9 <->>> // 2 pm1 m= 1 >]< < ] // 1 http://labs.cybozu.co.jp/blog/kazuho/archives/2006/06/bf_prime.php
61 : >>59 >+++++++++[-<++++++++++++>]<+.--------.+++++++++++ ++++.>+++[-<------>]<-.>+++++++++++++[-<----->]<.> +++++++++++++++++[-<++>]<.++++.>++++++++++[-<----- ->]<.
62 : >++++[<++++++++>-]>++++++++[<++++++>-]<++.<.> +.<.> ++.<.> ++.<.> >++ [<--->-] <..<.> .++.<.> --.>++ [<+++>-]<.<.> >++ [<--->-]<.>++[<++++>-]<.<.> >++[<--->-] <-.+.<.> -.>+++[<++>-]<+.<.> >++ [<--->-]<.--.<.> ++.++++.<.> ---.---.<.> +++. -.<.> +.+++.<.> --.--.<.> ++.++++.<.> ---.-----.<.> +++++.+.<.> .>++ [<--->-] <.<.> >++ [<+++>-]<.----.<.> ++++.++.<.> -.-----.<.> +++++.+.<.> .--. http://labs.cybozu.co.jp/blog/takesako/2006/06/bpencode.html
63 : >++++[<++++++++>-]>+++++++[<++++++++>-]<+>+++++++++>>++++++++++[<++++++++++>-] <--[>[-]<[->+>+<<]>>[-<<+>>]<-[>[-]<<[->>+>+<<<]>>>[-<<<+>>>]<+[>>[-]>[-] <<[>+>+<<-]>>[<<+>>-]<>[-]+<[>-<[-]]>[-<<<<[->>+>>+<<<<]>>>>[-<<<<+>>>>]<<+>>] <<-<-]> >[-]+<[[-]>-< ]>[-<>>[-]+<<<<[-]+>>>]<<<-]>>>> >[-]+<[[-]>-< ] >[-<<<<<<<<.>>>[-]++++++[<<++++++++>>-]<<.>>++++++[<<-------->>-] <<<<.>>>>>>>>>]<<<<<<->>[-]<<<[->>+>+<<<]>>>[-<<<+>>>]<>+<[[-]>-<<<->>] >[-<<<+++++++++<->>>>]<<]
64 : お、なんか賑わってるねぇ。 前DAT、前々DAT誰か持ってたら 保管庫でもつくっとくかな
65 : これでいいのか ttp://ranobe.com/up/src/up330615.zip
66 : +[<++>-] と +[-<++>] は意味的には同じですか?
67 : >>65 ありがとう 思いのほか早くて驚いたw
68 : 受け取れたようなので消しといた。
69 : >>66 一緒じゃね
70 : ז
71 : ++++[>++++[>+++++>++++>+++++>+++++<<<<-]<-]>>-----.>+.>+++.>-.
72 : 2048コア位のBFCPUまだー?
73 : .NET用のアセンブリにするコンパイラ書いてみた http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8636.txt 世の中には既に同じようなものがあるみたいだけど気にしない
74 : BFで書かれてるのかとワクワクしちゃったじゃないか…
75 : 置換ネタで、いいなぁって思うのは ソース見ても一見、大した意味のない文章に見える所だと思う。 だからやたら出回ってる置換ネタの九割は意味なし。 その点長門は秀逸
76 : http://natu.txt-nifty.com/natsutan/2008/03/brainfuck_d62c.html http://blog.livedoor.jp/naoya_t/archives/cat_50030990.html
77 : misaじゃね?
78 : みさみさ?
79 : ttp://thumb.vipper.org/vfile/vip1110508.jpg
80 : 抜いた
81 : 魂が?w
82 : >>79 ++++++[>++++++<-]>[>+>+<<-]>--->>++++ +++++[<+++++++++>-]<--------------.++ +++++++++.---.+++++.---------------.++ ++++++++++++.--.++++.----------------. ++++++++++++++++<.>
83 : sage
84 : age
85 : sagi
86 : いい加減飽きただろうがどうしても置換ネタ > → r(right) < → l(left) + → p(plus) - → m(minus) [ → s(start) ] → e(end) . → o(output) , → i(input) BFの命令を上の表で対応する英字から始まる任意の英単語に置換して英文を作る。解釈の際に、記号や表で対応関係に無い英字から始まる英単語は無視される。 例) pineapple → + 例) She must go east. → [-] Hello, world!↓
87 : 普通に「読めない文字はスルーする」という従来通りの挙動でいいのでは
88 : 無駄に英文が長くなる 却下
89 : 88は86に対するレスね >>87 でいいと思う
90 : なんとか意味の通じる英文を・・・と考えての仕様だろうが 残念ながら君には50音版を作ってもらう
91 : + → E - → A > → T < → I [ → S ] → N . → R , → U
92 : >>91 -<[<>+.,
93 : >>92 [<+][,.,
94 : + → いろはにほへと - → ちりぬるを > → わかよたれそ < → つねならむ [ → うゐのおくやま ] → けふこえて . → あさきゆめみし , → ゑひもせす 濁音・半濁音・小文字は清音と一緒 「ん」はスルー
95 : ルール考えるのはいいけど、 それで自分でプログラム書いてみろってばさ。
96 : Urban Muellerさんに言ってるんだな
97 : もう痴漢ネタは秋田
98 : ほしゅ
99 : ほしゅう
100read 1read
1read 100read
TOP カテ一覧 スレ一覧 削除依頼 ▲
・ 次のスレ
だめです! HSP厨は絶対に犯罪です。 Oven/Egg総合スレ part1 WEBコンパイラってないの? プログラミングに必要な細か〜い機能