BrainFuck Part.3 <[+-.,]>
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/01/08(木) 12:09:18難解プログラミング言語の一つ。
オシシメサイトは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/
0002デフォルトの名無しさん
2009/01/08(木) 12:11:32名称が良いものではないため、Brainf*ckと呼称するのが一般的。
開発者Urban Müllerがコンパイラがなるべく小さくなる言語として考案した。
実際、Müllerが開発したコンパイラのサイズは123バイト(キロバイトではない!)、
インタプリタは98バイトとなっている。
処理系には十分なサイズのbyte型配列とその要素のひとつを指すポインタがある。
ポインタを「>」「<」命令で移動させながら、そのポインタが指す値を増減させて
処理を進めていく(Hello world参照)。
実用性はほとんど無いように思われるが、これだけでチューリングマシンで実行可能な
あらゆるプログラムが記述できる(チューリング完全である)とされている。
0003デフォルトの名無しさん
2009/01/08(木) 12:20:32ttp://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乙
++++++++[>++++++++<-]>--..-------------.<+++++[>++++++<-]>.+++++.+.
0004デフォルトの名無しさん
2009/01/08(木) 12:25:23長門有希
(リンク先行方不明)
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
※置換ネタは無意味なので控えましょう
0005デフォルトの名無しさん
2009/01/08(木) 13:14:46ttp://book.mycom.co.jp/book/978-4-8399-2784-4/978-4-8399-2784-4.shtml
> あなたは「+-><.,[]」の8つの記号しかないプログラミング言語や、
> 空白だけで構成されるプログラミング言語があるのをご存じだろうか。
> 本書では、そんな奇妙な言語(Esoteric Language)を題材に
> プログラミング言語の作り方を解説します。
0006デフォルトの名無しさん
2009/01/08(木) 13:15:321-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
0007デフォルトの名無しさん
2009/01/08(木) 13:19:17ttp://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もあるよ!)
0008デフォルトの名無しさん
2009/01/08(木) 13:21:41$___,@_,@__,$_=(@@__="")=~//,?#=~/$/,->(_){_<(__="####"=~/$/)**__&&(@@__<<
_;@__[_+@_])},[*$<]*@@__;@__[$___];$____,$_,@___,$__,@__=$_[@_+($_+?!=~/!/
)..-@_],$`,[],[],->(_){(__=$_[_];__=~/[><+\-\.,]/?$__<<$_[_]:__==?[?(@___,
$__=$__,[]):__==?]?$__=@___<<$__:__==$\?$\:_)&&@__[_+@_]};@__[$___];@___,
$_,@@_,@__=[],[],$___,->(_){$_[@@_]||=$___;({?>=>->{@@_+=@_},?<=>->{@@_-=
@_},?+=>->{$_[@@_]+=@_},?-=>->{$_[@@_]-=@_},?.=>->{$><<@@__[$_[@@_]]},?,=>
->{$____=~/^./&&($____=$';$_[@@_]=@@__=~/#{((__,=[*?/..?:]&[$&];__)||(__,=
[*?@...?[]&[$&];__)||(__,=[*?`...?{]&[$&];__))&&__!=?{?$&:'\\'+$&}/)},$\=>
->{$\}}[$__[_]]||->{$_[@@_]!=$___&&(@___<<[$__,_-@_];$__=$__[_];@__[$___]
*@___,($__,_)=@___);""})[]&&@__[_+@_]};@__[$___]
■[Ruby] 記号だけで brainfuck インタプリタ
http://d.hatena.ne.jp/ku-ma-me/20080626/p1
0009デフォルトの名無しさん
2009/01/08(木) 13:24:43http://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
0010デフォルトの名無しさん
2009/01/08(木) 13:34:150011デフォルトの名無しさん
2009/01/08(木) 13:36:49ttp://unkun.ikaduchi.com/excel_bf/index.html
0012デフォルトの名無しさん
2009/01/08(木) 13:42:24ttp://jp.youtube.com/watch?v=GcDshWmhF4A
#…今指すメモリに西暦の上2桁入力
次のメモリに下2桁
次のメモリに月入力
次のメモリに日入力
#
> >[> > >+<<<-]> > >+[<+++++++++++++>-]+++++<[> >+>+<<<-]> > >[<<<+> > >-]<<[>>
+>+<<<-]> > >[<<<+> > >-]<<[->-> >-<<[[>+<-]> >+<<]>[<+>-]>[<<<<[> >+>+<<<-]> >
>[<<<+> > >-]> >+<+]<<<]>[>+<-]<<[>+>+<<-]>[<+>-]> >[<->-]> >[<<<<+> > > >-]<<<
[-]<<<<<<++[> > > > >+<<<<<-]> >+++++[> > >+<<<-]> > > >+++++++<[> >+>+<<<-]> >
>[<<<+> > >-]<<[> >+>+<<<-]> > >[<<<+> > >-]<<[->-> >-<<[[>+<-]> >+<<]>[<+>-]>[
<<<<[> >+>+<<<-]> > >[<<<+> > >-]> >+<+]<<<]>[>+<-]<<[>+>+<<-]>[<+>-]> >[<->-]>
>[<<<<+> > > >-]<<++++++++[<++++++>-]<.
今日の曜日を計算
0…月曜日 1…火曜日 ・・・ 6…日曜日
閏年の厳密な計算が面倒だったので2008〜2011までしか通用しないのと、
除算は前スレの誰かのを流用しただけなので、もっと短くできる。(メモリを破壊してもいいので)
0013デフォルトの名無しさん
2009/01/08(木) 13:47:25ttp://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(違
#勉強になった。
0014デフォルトの名無しさん
2009/01/08(木) 13:58:25>++++++++++[>+++++
+++>+++++++++++>++
++++++++++[<]>-]>--
.>>---.<--..<++.>+++.
0015デフォルトの名無しさん
2009/01/08(木) 13:59:38const(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!");
}
0016デフォルトの名無しさん
2009/01/08(木) 14:00:38..>...<<+++.---.> >..<....>...<..................>..<.............>...<.................>..<<+++.---.>
>.......<...>..<..>..<..>.....<..................>..<............>.....<..>..<..>..<<+++.---.> >..<..
..>..<..>....<...>..<...>..<...>..<.>..<.>....<..>......<.>..<...>..<.>..<...>..<.>..<.>..<<++
+.---.> >..<.....>..<.>..<......>......<...>..<.>...<...>..<...>..<...>..<...>..<.>..<......>...<<
+++.---.> >..<....>...<.>..<.....>..<...>..<...>..<.>..<....>..<...>..<...>..<...>..<.>..<...>..
<.>..<.>..<<+++.---.> >........<..>..<......>....<.>...<.>..<.>..<....>..<...>..<....>.....<...>
.....<..>..<...>..
0017デフォルトの名無しさん
2009/01/08(木) 14:02:020018デフォルトの名無しさん
2009/01/08(木) 14:05:00H4sICFJPkEYAAIGfdzVLMjdCRnIyAJWV63ECMQyE/9/MVSKUCjRuxOP+28jntc6CC0wSAcaWVmu9
Dlprj9YM6bFWX9J88I7wfplrRS6zQeDdIh5C2XksimIRg8doXR+z4ikqAJZsHBC0HpLzYJFvlw1O
1g4QlsCJ2xciMAhkOsILTJ9QCHk1jE/hGTYL//vSfVQGEMygz4PMuH7lwd4b6SDAbVTGlS9kYCc4
PcE7O4UeM0YREztwpaM4MyXkusDHVLUsCQifBNMGYJQQ44apQgmDstTdLz1hpzKUecJsS1dnOkFm
WJGNHChzLobi037sC4d/bth5fGhZ9YsVk4dr2SvxbnS7vNY87j7da9VupZLVohAAoiCpPo89eYS8
mjA3su6aIcqAwCZN8gxobrdzhJF7ew5BGFs8bB5EOldpsICpTZZljRvkXeO35xHBVW/rpnN1Evv7
7lXPLLtvegrL9e4mYtdFsBrqbLdY8AMsV2nkAIrpGQswiVCqMkAmCBG9UkAgpb96iVlgdLkXC1ln
nXZ98utDld7U6Pl6Zf1aiIoI+wX9T9wwVuRycLmjgQIVekuFiJbOpcn5cDSzplINPYU2/aoW9bOd
gkkpOslnf3R7ISZ1wGL1zFwV8szWfv6OKY0vNa+odF7Su2HSPD5++ZsZ31FFeUKKBgAA
0019デフォルトの名無しさん
2009/01/08(木) 14:13:48プログラムが終了しないときは = → 実行 → 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っていう呼び方を推奨する。
因みに日本語訳は、”魚の骨”だ。解説は要らないと思う。
0020デフォルトの名無しさん
2009/01/08(木) 14:24:15+++++++++[>+++[>+++++<-]<-]>>++.<++++++[>+++++++<-]>.
0021デフォルトの名無しさん
2009/01/08(木) 15:49:57どこで聞いたらいいでしょうか??この板にくるのは初めてなもんでorz
スレチですみません、誰か心やさしい人教えてください
0022デフォルトの名無しさん
2009/01/08(木) 15:57:11http://pc11.2ch.net/test/read.cgi/unix/1086016412/
0023デフォルトの名無しさん
2009/01/08(木) 16:15:31ありがとうございます!
0024デフォルトの名無しさん
2009/01/08(木) 21:44:16ブックマークレット作ってみることにした
0025デフォルトの名無しさん
2009/01/08(木) 22:27:070026デフォルトの名無しさん
2009/01/08(木) 23:12:08+++++++++++++++++++++++++++++++++++++++++++++++++.
0027デフォルトの名無しさん
2009/01/08(木) 23:13:19,[.>,]
0028デフォルトの名無しさん
2009/01/09(金) 00:06:510029デフォルトの名無しさん
2009/01/09(金) 00:17:410030デフォルトの名無しさん
2009/01/09(金) 00:34:130031デフォルトの名無しさん
2009/01/09(金) 00:41:510032デフォルトの名無しさん
2009/01/09(金) 01:45:02()*+,-./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());
0033デフォルトの名無しさん
2009/01/09(金) 01:47:57その後BFコードを選択してブックマークを選ぶと実行されます
デフォルトでデバッグモードで起動しますがデバッグをキャンセルすると
その場所から残りをリアルタイムで実行されます
とりあえず FireFox3 では動いた
IE6 だと JavaScript 単体では動くがブックマークレットにすると動かない
たぶんどこかの文字をエスケープする必要があると思う
0034デフォルトの名無しさん
2009/01/09(金) 01:49:002バイトコードは試したけどまだうまくいっていないので
同様に「.」表示されます
0035デフォルトの名無しさん
2009/01/09(金) 07:26:310036デフォルトの名無しさん
2009/01/09(金) 07:39:02popupブロックに引っ掛かったのでとりあえずalertにした感じ
改良予定としてはpopupじゃなく画面分割でデバッグ出来て
ここみたいに
ttp://cfs.maxn.jp/neta/onlineBrainFuck.html
実行位置が目視で判るようにしつつワークレジスタも表示出来るといいですね
FireFoxだと動いてIEで動かないときってFireBugでデバッグ出来ないから困りますね orz
0037デフォルトの名無しさん
2009/01/09(金) 07:41:34FireFoxのwatchdogにつかまって警告でてワロス
0038デフォルトの名無しさん
2009/01/09(金) 08:46:23乙
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を捨てよう
0039デフォルトの名無しさん
2009/01/09(金) 08:49:31ttp://subsimple.com/bookmarklets/tips.asp#ScriptInclusion
0040デフォルトの名無しさん
2009/01/09(金) 12:46:24バグというか仕様の解釈の違いだろうけど
b[m]++; → ++b[m]&=255;
b[m]--; → --b[m]&=255;
o.push(a.charAt(b[m] % 256)); → o.push(a.charAt(b[m]));
の方が安定するかもしれない
(無限ループもどきが減ると思う)
0041デフォルトの名無しさん
2009/01/09(金) 13:08:310の状態で[]に突入せずスルーするケースで(そういう書き方が存在するんだね)落ちてる
if(c=='['){}中の
if(!b[m])のelse節にs.push(i);があるけどそこは取ってif(!b[m])の前に移す
if(c=='['){s.push(i);if(!b[m])
0042デフォルトの名無しさん
2009/01/09(金) 13:25:35JavaScriptスレ池とか言われそうなので
一通り直したらまたうpするかも知れません
0043デフォルトの名無しさん
2009/01/09(金) 13:43:17pushの位置が原因じゃなかったんだな
まさにBFコードが無限ループする前にJavaScriptが無限(ry
いままで良く動いてたなwww
0044デフォルトの名無しさん
2009/01/09(金) 13:53:21javascript:(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());
0045デフォルトの名無しさん
2009/01/09(金) 13:54:46未定義命令もエラー出さずにスキップして良いかもしれない
FizzBuzzもちゃんと一瞬で終わるようになったよ
++++++[->++++> >+>+>-<<<<<]>[<++++> >+++>++++> >+++>+
++++>+++++> > > > > >++> >++<<<<<<<<<<<<<<-]<++++>+++
>-->+++>-> >--->++> > >+++++[->++>++<<]<<<<<<<<<<[->-
[> > > > > > >]>[<+++>.>.> > > >..> > >+<]<<<<<-[> > > >]>[<+
++++>.>.>..> > >+<]> > > >+<-[<<<]<[[-<<+> >]> > >+>+<<<<<
<[-> >+>+>-<<<<]<]>>[[-]<]>[> > >[>.<<.<<<]<[.<<<<]>]>.<<<<
<<<<<<<]
0046デフォルトの名無しさん
2009/01/09(金) 14:32:52var 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
0047デフォルトの名無しさん
2009/01/09(金) 15:19:57ction();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
に似てきた(入力は無いみたいだけど)
0048デフォルトの名無しさん
2009/01/09(金) 15:20:49var 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文字くらい削れた。
0049デフォルトの名無しさん
2009/01/09(金) 15:34:29この大きさだとIE6のbookmarkletに入りますかね
0050デフォルトの名無しさん
2009/01/09(金) 18:32:42おおお勉強になった。でもなんかエラー出たので微修正。
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がない。
0051デフォルトの名無しさん
2009/01/09(金) 19:00:32>>16 とか動きます?
0052デフォルトの名無しさん
2009/01/09(金) 19:14:150053デフォルトの名無しさん
2009/01/09(金) 20:50:36~Esoteric Language~
たちよみしてきた
Brainfuck
じゃなくて
Brainfsck
だっていうのは本当なんだろうか
0054デフォルトの名無しさん
2009/01/09(金) 21:44:07元々あったネタなんだなと思ったんだけどどうなんだろ。
0055デフォルトの名無しさん
2009/01/10(土) 00:03:49j=s=[];をj=[];s=[];にしたら直った。
でもプロポーショナルフォントで表示されて残念なことになってたw
0056デフォルトの名無しさん
2009/01/10(土) 00:36:09あっちではそこそこ知られてるネタなんだと思うけど
出所はわからなかった
0057デフォルトの名無しさん
2009/01/10(土) 02:04:24IE6でも動きました!!やっと制限がなくなって嬉しいです!!
すぐ結果が見れて素敵です
あと必要なのはUNICODE対応くらいでしょうか
0058デフォルトの名無しさん
2009/01/10(土) 07:15:46++[>++[>++>++<<-]<-]
を食わせてみたら本来 00 00 08 08 となるべきところ
なにもでなかった
0059デフォルトの名無しさん
2009/01/10(土) 18:00:58.>>+++++++++++[-<++>]<+[-<-->]<.+++++++++++++++.-----------------...........
.>+++[-<++++++>]<+.>+++++[-<++++++>]<+.>+++++++++++[-<--->]<.---------------
--.+++.-........+.---...........>+++++++++++[-<--->]<.>+++++++++++[-<+++>]<.
...+++.++++++++++++++++.>+++[-<------>]<-...>++++++[-<++++++++>]<.>>++++++++
+++[-<++>]<+[-<-->]<.+++++++++++++++.---------------......+++++++++++++++++.
>+++++[-<++++++>]<+.>+++++++++++[-<--->]<.---------------.+.++++++++++++++++
.>+++[-<------>]<-.............>++++++[-<++++++++>]<.>>+++++++++++[-<++>]<+[
-<-->]<.+++++++++++++++.---------------.....+++++++++++++++++.>+++++[-<+++++
+>]<+.>+++++++++++[-<--->]<.--------------.++++++++++++++++.>+++++++++++++[-
<---->]<.>+++++++++++[-<+++>]<.................>++++++[-<++++++++>]<.>>+++++
++++++[-<++>]<+[-<-->]<.+++++++++++++++.-----------------..>+++[-<++++++>]<+
.>+++++[-<++++++>]<+.>+++++++++++[-<--->]<.--------------.---....+++.+++++++
+++++++++.>+++[-<------>]<-..........>++++++[-<++++++++>]<.>>+++++++++++[-<+
+>]<+[-<-->]<.+++++++++++++++.---------------.....>+++++++[-<----->]<.>+++++
++[-<+++++>]<.+++++++++++++++++.>+++++[-<++++++>]<+.>+++++++++++[-<--->]<.--
------------.>++++++[-<------>]<.
http://lowreal.net/logs/2006/09/04/3
0060デフォルトの名無しさん
2009/01/10(土) 18:11:22>+++++++[<++++++++>-]<+>+++++++++> // 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
0061デフォルトの名無しさん
2009/01/10(土) 18:18:46>+++++++++[-<++++++++++++>]<+.--------.+++++++++++
++++.>+++[-<------>]<-.>+++++++++++++[-<----->]<.>
+++++++++++++++++[-<++>]<.++++.>++++++++++[-<-----
->]<.
0062デフォルトの名無しさん
2009/01/10(土) 18:24:30<..<.> .++.<.> --.>++ [<+++>-]<.<.> >++ [<--->-]<.>++[<++++>-]<.<.> >++[<--->-]
<-.+.<.> -.>+++[<++>-]<+.<.> >++ [<--->-]<.--.<.> ++.++++.<.> ---.---.<.> +++.
-.<.> +.+++.<.> --.--.<.> ++.++++.<.> ---.-----.<.> +++++.+.<.> .>++ [<--->-]
<.<.> >++ [<+++>-]<.----.<.> ++++.++.<.> -.-----.<.> +++++.+.<.> .--.
http://labs.cybozu.co.jp/blog/takesako/2006/06/bpencode.html
0063デフォルトの名無しさん
2009/01/10(土) 19:00:44<--[>[-]<[->+>+<<]>>[-<<+>>]<-[>[-]<<[->>+>+<<<]>>>[-<<<+>>>]<+[>>[-]>[-]
<<[>+>+<<-]>>[<<+>>-]<>[-]+<[>-<[-]]>[-<<<<[->>+>>+<<<<]>>>>[-<<<<+>>>>]<<+>>]
<<-<-]> >[-]+<[[-]>-< ]>[-<>>[-]+<<<<[-]+>>>]<<<-]>>>> >[-]+<[[-]>-< ]
>[-<<<<<<<<.>>>[-]++++++[<<++++++++>>-]<<.>>++++++[<<-------->>-]
<<<<.>>>>>>>>>]<<<<<<->>[-]<<<[->>+>+<<<]>>>[-<<<+>>>]<>+<[[-]>-<<<->>]
>[-<<<+++++++++<->>>>]<<]
0064デフォルトの名無しさん
2009/01/10(土) 23:43:54前DAT、前々DAT誰か持ってたら
保管庫でもつくっとくかな
0065デフォルトの名無しさん
2009/01/10(土) 23:51:28ttp://ranobe.com/up/src/up330615.zip
0066デフォルトの名無しさん
2009/01/10(土) 23:56:34と
+[-<++>]
は意味的には同じですか?
0067デフォルトの名無しさん
2009/01/11(日) 00:54:03ありがとう
思いのほか早くて驚いたw
0068デフォルトの名無しさん
2009/01/11(日) 00:56:490069デフォルトの名無しさん
2009/01/11(日) 14:01:36一緒じゃね
0070デフォルトの名無しさん
2009/01/14(水) 10:04:190071デフォルトの名無しさん
2009/01/14(水) 13:24:370072デフォルトの名無しさん
2009/01/14(水) 21:45:100073デフォルトの名無しさん
2009/01/14(水) 22:03:43http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8636.txt
世の中には既に同じようなものがあるみたいだけど気にしない
0074デフォルトの名無しさん
2009/01/15(木) 15:22:250075デフォルトの名無しさん
2009/01/21(水) 16:59:37ソース見ても一見、大した意味のない文章に見える所だと思う。
だからやたら出回ってる置換ネタの九割は意味なし。
その点長門は秀逸
0076デフォルトの名無しさん
2009/01/21(水) 17:55:47http://blog.livedoor.jp/naoya_t/archives/cat_50030990.html
0077デフォルトの名無しさん
2009/01/21(水) 19:47:050078デフォルトの名無しさん
2009/02/10(火) 15:00:450079デフォルトの名無しさん
2009/02/15(日) 03:35:540080デフォルトの名無しさん
2009/02/15(日) 11:41:040081デフォルトの名無しさん
2009/02/15(日) 13:34:230082デフォルトの名無しさん
2009/02/15(日) 14:31:34++++++[>++++++<-]>[>+>+<<-]>--->>++++
+++++[<+++++++++>-]<--------------.++
+++++++++.---.+++++.---------------.++
++++++++++++.--.++++.----------------.
++++++++++++++++<.>
0083デフォルトの名無しさん
2009/03/15(日) 02:48:140084デフォルトの名無しさん
2009/03/15(日) 14:53:080085デフォルトの名無しさん
2009/03/21(土) 19:00:510086デフォルトの名無しさん
2009/03/23(月) 17:43:14> → r(right)
< → l(left)
+ → p(plus)
- → m(minus)
[ → s(start)
] → e(end)
. → o(output)
, → i(input)
BFの命令を上の表で対応する英字から始まる任意の英単語に置換して英文を作る。解釈の際に、記号や表で対応関係に無い英字から始まる英単語は無視される。
例) pineapple → +
例) She must go east. → [-]
Hello, world!↓
0087デフォルトの名無しさん
2009/03/23(月) 20:55:060088デフォルトの名無しさん
2009/03/23(月) 22:18:120089デフォルトの名無しさん
2009/03/23(月) 22:19:310090デフォルトの名無しさん
2009/03/23(月) 23:14:10残念ながら君には50音版を作ってもらう
0091デフォルトの名無しさん
2009/03/24(火) 00:31:18+ → E
- → A
> → T
< → I
[ → S
] → N
. → R
, → U
0092デフォルトの名無しさん
2009/03/24(火) 18:17:48-<[<>+.,
0093デフォルトの名無しさん
2009/03/24(火) 19:15:54[<+][,.,
0094デフォルトの名無しさん
2009/03/26(木) 21:34:05- → ちりぬるを
> → わかよたれそ
< → つねならむ
[ → うゐのおくやま
] → けふこえて
. → あさきゆめみし
, → ゑひもせす
濁音・半濁音・小文字は清音と一緒
「ん」はスルー
0095デフォルトの名無しさん
2009/03/27(金) 04:37:11それで自分でプログラム書いてみろってばさ。
0096デフォルトの名無しさん
2009/03/28(土) 15:17:100097デフォルトの名無しさん
2009/03/30(月) 23:42:150098デフォルトの名無しさん
2009/04/10(金) 11:23:470099デフォルトの名無しさん
2009/04/16(木) 22:58:240100デフォルトの名無しさん
2009/04/25(土) 15:59:460101デフォルトの名無しさん
2009/05/08(金) 00:39:190102デフォルトの名無しさん
2009/05/15(金) 21:03:390103デフォルトの名無しさん
2009/05/17(日) 20:47:000104デフォルトの名無しさん
2009/05/17(日) 23:05:240105デフォルトの名無しさん
2009/06/04(木) 21:57:560106デフォルトの名無しさん
2009/06/13(土) 16:24:340107デフォルトの名無しさん
2009/06/20(土) 16:17:420108デフォルトの名無しさん
2009/06/22(月) 01:30:360109デフォルトの名無しさん
2009/08/02(日) 21:49:41_.。ャぁて丕刀フ7ゎ。._
,.ィ炙ヲ�i≠┴⇒弍j込ス>。
. ,ィ升ヲナ'´ `゙'<弖心、
. ;夕フア´ \ホi心.
んfiУ ▽ij∧
从j'Y ∨iハ
. 斤W �kい
|友カ }ソ川
. い叭 仄ガ
. Wi从 从ノリ
. ∀t△ ∧fリ/
゙マじへ、 /リiУ
\夊i�d、_ ,.イ!刋/
`マ才i「≧ェ。。.。。っ夭テ少'゚
`゚'' ミ芝玉竺壬云=‐'´
 ̄ ̄
0110デフォルトの名無しさん
2009/08/03(月) 22:46:350111デフォルトの名無しさん
2009/08/03(月) 23:31:460112デフォルトの名無しさん
2009/08/03(月) 23:52:000113デフォルトの名無しさん
2009/08/04(火) 00:49:190114デフォルトの名無しさん
2009/08/04(火) 16:49:05これはコードだったのか
0115デフォルトの名無しさん
2009/08/04(火) 17:49:220116デフォルトの名無しさん
2009/08/04(火) 19:41:550117デフォルトの名無しさん
2009/08/04(火) 21:46:45とかじゃね
処理系によっては過剰の ] をプログラムの終了と解釈するとかもあるので
そのような処理系の場合は正常に終了する
0118デフォルトの名無しさん
2009/08/04(火) 21:47:47終了するかはともかく、正常に実行される
0119デフォルトの名無しさん
2009/08/18(火) 21:46:42BrainFuckライブラリを充実させることこそ我々の急務ではないだろうか!
0120デフォルトの名無しさん
2009/08/18(火) 23:36:080121デフォルトの名無しさん
2009/08/20(木) 06:23:46BrainFuckはチューリング完全だから、気合でなんとかすればよろし。
0122デフォルトの名無しさん
2009/08/25(火) 18:52:06相対位置でできれば良いんじゃない?
0123デフォルトの名無しさん
2009/08/25(火) 23:08:590124デフォルトの名無しさん
2009/08/26(水) 02:46:50そうするとメタプログラミング
みたいになるんじゃないか?
0125デフォルトの名無しさん
2009/08/26(水) 11:09:01逆ポーランド記法な言語からのコンパイラならなんとかできるかな
0126デフォルトの名無しさん
2009/08/26(水) 11:30:45だったらBFのソースを
全部その言語で書かなきゃいけなくなるんじゃ?
0127デフォルトの名無しさん
2009/08/26(水) 22:42:520128デフォルトの名無しさん
2009/08/26(水) 23:31:100129デフォルトの名無しさん
2009/08/26(水) 23:43:450130デフォルトの名無しさん
2009/08/27(木) 00:02:290131デフォルトの名無しさん
2009/08/27(木) 00:22:410132デフォルトの名無しさん
2009/08/27(木) 17:47:540133デフォルトの名無しさん
2009/08/27(木) 19:07:310134デフォルトの名無しさん
2009/08/27(木) 23:43:54http://www.clifford.at/bfcpu/bfcomp.html
A compiler for a c-like high-level language which generates brainf*ck code
0135デフォルトの名無しさん
2009/08/29(土) 21:39:590136名無しさん@そうだ選挙に行こう
2009/08/30(日) 08:20:26guy shirts
0137デフォルトの名無しさん
2009/08/31(月) 23:10:26linuxか・・・
0138デフォルトの名無しさん
2009/09/01(火) 23:56:37http://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
ここでやるのはスレチかな?
0139デフォルトの名無しさん
2009/09/02(水) 07:09:25ビジービーバーゲームって
http://www.infonet.co.jp/ueyama/ip/history/turing.html
でおk?
0140デフォルトの名無しさん
2009/09/02(水) 07:31:28それはチューリングマシンの説明で、ビジービーバーゲームとは違う。ビジービーバーの要点は
>停止するまでにテープに 1 を最も多く出力するような n-状態チューリングマシンを見つけ出そう、というゲーム
だよ。
0141デフォルトの名無しさん
2009/09/02(水) 07:43:26だったらチューリングマシンで
1が多く出力される遷移関数を考えるってこと?
0142デフォルトの名無しさん
2009/09/02(水) 07:56:56普通はチューリングマシンでやるところをBrainFuckでやってみようと。
0143デフォルトの名無しさん
2009/09/02(水) 08:03:58BFプログラムに変換するかが問題だな
0144デフォルトの名無しさん
2009/09/02(水) 17:55:03だから、
同じバイト数のBFコードで、
より大きな10進数を標準出力に生成する
こんな競技になる。
0145デフォルトの名無しさん
2009/09/02(水) 18:01:24じゃあかんの
0146デフォルトの名無しさん
2009/09/02(水) 18:24:18それだと無限ループになって
つまらないだろ
0147デフォルトの名無しさん
2009/09/02(水) 19:06:130148デフォルトの名無しさん
2009/09/02(水) 19:10:37じゃなきゃ比較なんて出来ないからな。
0149デフォルトの名無しさん
2009/09/02(水) 20:00:00[>+.]
ポインタがオーバーフローすれば止まる
0150デフォルトの名無しさん
2009/09/02(水) 20:03:58でも、処理系によっては
ループするぞ
0151デフォルトの名無しさん
2009/09/02(水) 20:52:53ビジービーバーを考えるときは、
テープの長さに限界は考えないよ。
0152デフォルトの名無しさん
2009/09/02(水) 21:58:450153デフォルトの名無しさん
2009/09/02(水) 22:41:240154デフォルトの名無しさん
2009/09/02(水) 22:51:29実装ではしょうがないかもしれないけどさ
0155デフォルトの名無しさん
2009/09/02(水) 22:56:090156デフォルトの名無しさん
2009/09/02(水) 23:28:560157デフォルトの名無しさん
2009/09/02(水) 23:37:01ある100状態のチューリングマシンがあって、
そのチューリングマシンがΣ(100)ステップ後に停止したとする。
このチューリングマシンがΣ(100)ステップ後に停止することを証明しようとしたら、
その証明は少なくともΣ(100)文字程度のオーダーの長さになる。
これは正しい?
0158デフォルトの名無しさん
2009/09/03(木) 03:57:09一番ゆるい条件を与えるならそうなるんじゃね。
オーダーは定数倍を無視するから。
遷移を全部書き出して示せばいいだけだからね。
0159デフォルトの名無しさん
2009/09/04(金) 22:47:530160デフォルトの名無しさん
2009/09/06(日) 18:28:260161デフォルトの名無しさん
2009/09/08(火) 00:22:480162デフォルトの名無しさん
2009/09/10(木) 07:01:390163デフォルトの名無しさん
2009/09/10(木) 15:59:52+++++[<+++++++++>-]<--------------.++
+++++++++.---.+++++.---------------.++
++++++++++++.--.++++.----------------.
++++++++++++++++<.>
0164デフォルトの名無しさん
2009/09/10(木) 19:50:09グロ注意
0165デフォルトの名無しさん
2009/09/15(火) 22:01:450166デフォルトの名無しさん
2009/09/18(金) 23:51:370167デフォルトの名無しさん
2009/09/21(月) 19:44:060168デフォルトの名無しさん
2009/09/22(火) 07:00:44どうしたらいいか考えてみた結果次のようになった。
まず、メモリはテープではなく無限の高さを持つ2分木のようなものを想定。
L ポインタを2分木メモリの左の子へ移動
R ポインタを2分木メモリの右の子へ移動
U ポインタを2分木メモリの親へ移動
+ BFと同様
- BFと同様
. BFと同様
, BFと同様
[ BFと同様
] BFと同様
まあ、大体BFでlispのconsセルが使えるようなイメージ。
0169デフォルトの名無しさん
2009/09/22(火) 14:13:500170デフォルトの名無しさん
2009/09/22(火) 14:17:53変わらないぞ
0171デフォルトの名無しさん
2009/09/22(火) 16:31:490172デフォルトの名無しさん
2009/09/22(火) 17:20:27拡張=BFの死なんだよな
過去ログの通り、拡張行為すればするほどBFの簡潔さが失われていき
別にBFを使う理由がなくなる
0173デフォルトの名無しさん
2009/09/22(火) 18:50:58500バイト以内で書けたら合格にしてやる
0174デフォルトの名無しさん
2009/09/22(火) 20:51:370175168
2009/09/22(火) 22:56:17一応このスレの中はチェックしたつもりだったけど
前スレはチェックしてないんだよね。
>>168のプログラム言語をBTBF(BinaryTree BrainFuck)と呼ぶとして、
BTBFのコードをBFのコードに変換するトランスレータを実装しろってのは
学生向け演習問題として良問じゃね?
0176デフォルトの名無しさん
2009/09/22(火) 22:59:16まだ出てなかったぞ
0177デフォルトの名無しさん
2009/09/22(火) 23:06:44まあいらないけど
x 直前のコマンドを*p回繰り返す
* p=*p
& *p=p
c 最も近い前方の[にジャンプ
b 最も近い後方の]にジャンプ
0178168
2009/09/22(火) 23:42:17俺は拡張=BFの死とは思ってないんだよね。
シンプルさがBFの価値なのは同意だけど、
もっともシンプルなチューリング完全言語BFと
Cやlispといった高級言語の生産性の溝がどれだけあるかってのを
把握できるのもBFの存在価値だと思う。
だから「BF+α=lisp」のαの部分がどれだけあるのか、俺は興味があるです。
#どっちもチューリング完全だから等価って乱暴な議論はなしね。
0179デフォルトの名無しさん
2009/09/23(水) 00:05:02そんな+α的な物はない
0180168
2009/09/23(水) 00:08:29チューリング完全的に考えて。
極端な話、理屈の上ではBFでlispインタプリタは書けることになっている。
それがどれくらい大変か?と言う問題はある。
lispでBFインタプリタを書くのは簡単だけど、
BFでlispインタプリタを書くのはきつそう。
0181デフォルトの名無しさん
2009/09/23(水) 00:17:400182デフォルトの名無しさん
2009/09/23(水) 03:42:27真面目にシンボルをASCIIのチャーチ数表現で取り扱えば同じかそれ以上に大変だと思うけどな
0183デフォルトの名無しさん
2009/09/23(水) 08:18:230184168
2009/09/23(水) 08:33:05てっきりclispのつもりで話してた。
0185デフォルトの名無しさん
2009/09/23(水) 09:12:38便利かどうか試しに実装してみようと思ったら疑問がいくつか。
・2分木メモリは値を持つの?持たないとしたらポインタがconsを指しているとき
入出力命令は何をすべき?
・+-で指すリニアなメモリとLRUで指す2分木メモリの空間はまったく別のもの?
ていうか+-廃止すべき?
自分的にはノーアイデアなんだけど、BFくらい最小のLispができそうですごく面白そうだとは思う。
0186168
2009/09/23(水) 10:30:02後は通常のBFと同じ。
0187デフォルトの名無しさん
2009/09/23(水) 10:47:01プログラミング言語として使えないなら机上の空論
0188デフォルトの名無しさん
2009/09/23(水) 10:49:15もちろん、このスレで使ってる人たちも、意味とか前提とか
分かって使ってるよね?
0189185
2009/09/23(水) 12:19:470190デフォルトの名無しさん
2009/09/23(水) 16:29:57説明して
0191デフォルトの名無しさん
2009/09/23(水) 16:43:51でも、それじゃ駄目なんだよな
BFとは別物として考えなきゃいけなくなる
0192デフォルトの名無しさん
2009/09/23(水) 16:53:570193デフォルトの名無しさん
2009/09/23(水) 19:48:01入出力命令なんてあるし。
ある意味入出力命令がシステムコールってことになるんじゃね。
0194デフォルトの名無しさん
2009/09/23(水) 19:51:53それはbfが関数型言語じゃないから
純粋とか言う問題じゃないんじゃないか
0195デフォルトの名無しさん
2009/09/23(水) 21:26:57負の方向のメモリマッピングにコンソール(.,)以外の
I/Oを割り当てることかな
[-1]に数値をストアしておいて
[-2]の位置で+-すると[-1]の回数beepとか
[-3][-4]に数値をストアしておいて
[-5]の位置で+-すると[-3][-4]の座標の白黒が反転するとか
0196デフォルトの名無しさん
2009/09/24(木) 01:22:24>+++++++++[-<++++++++++>]<++++++, //in 60h
0197185
2009/09/24(木) 02:13:09実際のリスト構造はともかくとして、いろいろ遊んでみると、メモリ空間がL-UとR-Uの
2次元になった、という印象。可能性はすごく感じるので、なんとかしたいのだが。
0198168
2009/09/24(木) 05:53:17実行中にバンバンnewするようなプログラムや複数の可変長配列を使うアルゴリズムが
いくらか書きやすくなるんじゃないかとは思ってる。
あと、関数コールの機構もBFで実装するのはきつくても
BTBFならもしかしたらBFよりずっと楽にいけんじゃね?
0199デフォルトの名無しさん
2009/09/24(木) 21:05:22L: p*=2;
R: p=p*2+1;
U: p/=2
を付け加えて、ptrの初期値を1に修正するだけだな
0200デフォルトの名無しさん
2009/09/27(日) 23:03:260201デフォルトの名無しさん
2009/09/27(日) 23:20:150202デフォルトの名無しさん
2009/09/27(日) 23:43:250203デフォルトの名無しさん
2009/09/27(日) 23:56:130204デフォルトの名無しさん
2009/09/27(日) 23:57:210205デフォルトの名無しさん
2009/09/28(月) 01:51:09ライブラリというかコードスニペットレベル?
0206デフォルトの名無しさん
2009/09/28(月) 07:02:38どこのメモリに数値を入れて
どこのメモリに答えが返ってくる
って感じにすると良いんじゃない?
0207デフォルトの名無しさん
2009/09/29(火) 02:17:130208デフォルトの名無しさん
2009/09/29(火) 02:31:22敢えて関数呼び出し機構を命令に加える必要はない
0209デフォルトの名無しさん
2009/09/29(火) 03:23:000210デフォルトの名無しさん
2009/09/29(火) 09:22:160211デフォルトの名無しさん
2009/09/29(火) 10:00:05標準入出力から他のBFプロセスで制御すればいいんじゃね…?
0212デフォルトの名無しさん
2009/09/29(火) 12:15:04バイナリデータですらシステムコールが可能と言えてしまうぞ
0213デフォルトの名無しさん
2009/09/29(火) 18:41:29ダブるバッファリングは無理か
0214デフォルトの名無しさん
2009/09/29(火) 19:54:180215デフォルトの名無しさん
2009/09/29(火) 20:22:160番地に+すると1番地の番号のシステムコールを2,3,4,...番地の値を引数にして呼び出すみたいな
0216デフォルトの名無しさん
2009/09/29(火) 20:26:54解析とかも簡単になるんじゃない?
0217デフォルトの名無しさん
2009/09/29(火) 22:14:030218デフォルトの名無しさん
2009/09/30(水) 02:09:420219デフォルトの名無しさん
2009/11/11(水) 22:18:350220デフォルトの名無しさん
2009/11/19(木) 23:41:500221デフォルトの名無しさん
2009/11/20(金) 00:06:170222デフォルトの名無しさん
2009/12/03(木) 18:18:34/ \
/ ⌒ ⌒\
/ ,(⌒) (⌒)、\ ひとりSMセット買ったお
| /// (__人__)/// | 今夜は楽しむおww
\ ` ヽ_ノ /
ヽ , __ , イ
/ |_"____
| l.. /l SMグッズ l
ヽ 丶-.,/ |_________|
/`ー、_ノ / /
:: .|ミ|
:: .|ミ| ::::::::
::::: ____ |ミ| ::::
:: ,. -'"´ `¨ー 、 ::
:: / ,,.-'" ヽ ヽ、 ::
:: ,,.-'"_ r‐'" ,,.-'"` ヽ、 ::
:: / ヾ ( _,,.-='==-、ヽ ヽ、
:: i へ___ ヽゝ=-'"/ _,,> ヽ
:: ./ / > ='''"  ̄ ̄ ̄ ヽ
:: / .<_ ノ''" ヽ i
:: / i 人_ ノ .l
:: ,' ' ,_,,ノエエエェェ了 /
i じエ='='='" ', / ::
', (___,,..----U / ::
ヽ、 __,,.. --------------i-'" ::
ヽ、_ __ -_'"--''"ニニニニニニニニヽ ::
`¨i三彡--''"´ ヽ ::
/ ヽ :: ┼ヽ -|r‐、. レ |
/ ヽ:: d⌒) ./| _ノ __ノ
0223デフォルトの名無しさん
2009/12/03(木) 20:02:480224デフォルトの名無しさん
2009/12/04(金) 05:07:08Brainfuckのプログラム書くより簡単でなんだか複雑な気分だ…
0225デフォルトの名無しさん
2009/12/04(金) 22:07:520226デフォルトの名無しさん
2009/12/04(金) 23:22:030227デフォルトの名無しさん
2009/12/04(金) 23:35:380228デフォルトの名無しさん
2009/12/05(土) 00:08:590229デフォルトの名無しさん
2009/12/05(土) 09:33:31: で、ポインタの指している値とその次のポインタの値を2バイト文字として出力する。
; で、2バイト文字を入力して、ポインタの指している値とその次のポインタの値に代入する。
ってのはどうよ?
0230デフォルトの名無しさん
2009/12/05(土) 11:01:110231229
2009/12/05(土) 16:21:32>++++++++++[<+++++++++++++>-]
+++[>+++++<-]>[<++++++++++++>-]<--->
>++++++++++[<+++++++++++++>-]
>++++[>++++<-]>[<+++[<+++++>-]>-]<<+>
>++++++++++[<+++++++++++++>-]
>++++++++++++++[<++++++++++++++>-]<+++++>
>++++++++++[<+++++++++++++>-]
>++++++++++++++[<++++++++++++++>-]<----->
>++++++++++[<+++++++++++++>-]
>++++++++++++++[<++++++++++++++>-]<+++++++++>
>++++++++++++[<++++++++++++>-]
>+++++++++++++[<+++++++++++++>-]<------->
>++++++++++++[<+++++++++++>-]<++++++>
>++++++++[<++++++++>-]<+++++>
>++++++++++[<+++++++++++++>-]<->
>++++++++[<+++++++++>-]<+
<<<<<<<<<<<<<<<
:>>:>>:>>:>>:>>:>>:>>:>>:
メモリに"こんにちは世界!"を表わす
82,B1,82,F1,81,C9,81,BF,82,CD,90,A2,8A,45,81,49
がメモリに積まれて、最後の方の":"命令で、Shift-JIS形式の文字が表示される。
作ってから思ったけど、これって既出?
0232デフォルトの名無しさん
2009/12/05(土) 17:03:480233デフォルトの名無しさん
2009/12/05(土) 17:46:50Shift-JISを使うために新命令は必要ないってことわかってる?
入出力は1byteずつでも、解釈はまとめてやればいい。
実際そうしてShift-JISを扱えるBF処理系も存在する。
0234デフォルトの名無しさん
2009/12/05(土) 22:50:53:>
が顔に見えるってギャグだろどうせ
0235デフォルトの名無しさん
2009/12/06(日) 10:05:30[:<]<
0236デフォルトの名無しさん
2009/12/06(日) 23:24:240237デフォルトの名無しさん
2009/12/08(火) 12:47:34時代は純粋関数型言語Unlambdaだぜ
0238デフォルトの名無しさん
2009/12/09(水) 03:11:58そんなこと言うならBrainfuckユーザが容易にUnlambdaへ移行できるように
Brainfuck-to-UnlambdaトランスレータをUnlambdaで書いてくれw
0239デフォルトの名無しさん
2009/12/09(水) 18:02:480240デフォルトの名無しさん
2009/12/22(火) 13:47:480241デフォルトの名無しさん
2010/01/02(土) 17:42:21自分で作る気が失せる出来
0242デフォルトの名無しさん
2010/01/02(土) 17:58:44見てきた
なんじゃあのオプティマイズ
0243デフォルトの名無しさん
2010/01/03(日) 00:13:20例示のプログラムのmやpはいらん
0244デフォルトの名無しさん
2010/01/03(日) 08:07:280245デフォルトの名無しさん
2010/01/09(土) 00:17:46int main(int argc, char *argv[])
{
int c;
while ((c=getchar()) != EOF) {
while (c) {
putchar('+');
c--;
}
puts(".>");
}
}
0246デフォルトの名無しさん
2010/01/09(土) 02:25:080247245
2010/01/09(土) 19:43:17#include <stdio.h>
int main(int argc, char *argv[]){
int c,d;
int l = 0;
while ((c=getchar()) != EOF) {
d = c-l;
if (d>0) {
while (d--) {
putchar('+');
}
} else {
while (d++) {
putchar('-');
}
}
puts(".");
l = c;
}
}
0248デフォルトの名無しさん
2010/01/10(日) 04:01:440249デフォルトの名無しさん
2010/01/15(金) 16:34:450250デフォルトの名無しさん
2010/01/16(土) 09:18:43凄いんだが、何を行ってるのか分からない( ´∀`)ハハハ
0251デフォルトの名無しさん
2010/01/16(土) 17:09:01直感的には、NP完全
0252デフォルトの名無しさん
2010/01/16(土) 20:19:33計算不可能な問題だと思う
0253デフォルトの名無しさん
2010/01/17(日) 12:19:05実質不可能って意味ではそうかもしれんが。
現実的でない時間をかけてもいいのなら、短いものから順にブルートフォースするといつかはたどり着くわけだから計算は可能。
0254253
2010/01/17(日) 12:23:29無限ループかと思えるくらいに長い時間をかけて、最小BFとなるパターンと、単なる無限ループを区別するには
停止可能性の判定が必要になってくる。
0255デフォルトの名無しさん
2010/01/17(日) 19:49:19だとすれば、最小BFが計算できればその最小BF同士の比較によって等価性判定ができちゃうので計算不可能だと思う。
0256245
2010/01/20(水) 22:10:00{
int prevcode;
int deletecode;
/*ここに最適化処理を書きます。*/
/*1 ムダなコードの取り除き*/
while (*bfcode) {
if (prevcode == '>' && *bfcode == '<') {
*bfcode = *(-1 +bfcode) = ' ';
deletecode = deletecode+2;
}
if (prevcode == '+' && *bfcode == '-') {
*bfcode = *(-1 +bfcode) = ' ';
deletecode = deletecode+2;
}
prevcode = *bfcode++;
}
strcpy(optbfcode, bfcode);
return deletecode = deletecode+2;
}
0257デフォルトの名無しさん
2010/02/21(日) 14:34:220258デフォルトの名無しさん
2010/02/21(日) 18:32:02http://d.hatena.ne.jp/hatenadiary/20100219/1266571864
0259デフォルトの名無しさん
2010/02/22(月) 17:35:510260デフォルトの名無しさん
2010/02/27(土) 15:51:14シンタックスハイライト作るのも簡単ってのは斜め上だなぁ。気づかなかった。
0261デフォルトの名無しさん
2010/03/03(水) 16:39:55「Dvorakでもかなり早く打てるようになってきたぞ」
「念のためうちのサーバーでもGopherをサポートできるようにしときました」
「XHTML、HTML、さらにHAIKUにも準拠しています」
「brainfuckのシンタックスハイライトに対応しました」 ← new!
0262デフォルトの名無しさん
2010/04/10(土) 11:57:140263デフォルトの名無しさん
2010/04/14(水) 01:57:520264デフォルトの名無しさん
2010/04/14(水) 02:03:540265デフォルトの名無しさん
2010/04/14(水) 09:13:58http://www.nicovideo.jp/watch/sm10384056
0266デフォルトの名無しさん
2010/04/14(水) 16:52:590267デフォルトの名無しさん
2010/04/14(水) 17:08:110268デフォルトの名無しさん
2010/05/13(木) 00:26:540269デフォルトの名無しさん
2010/05/13(木) 16:03:270270デフォルトの名無しさん
2010/05/19(水) 23:22:020271デフォルトの名無しさん
2010/05/20(木) 00:20:070272デフォルトの名無しさん
2010/05/24(月) 15:35:190273デフォルトの名無しさん
2010/05/29(土) 04:23:28ようやくHelloWorldできた
>>>++++++++++[<+<<+>>>-]<[<++++>>++++++>++++++++++<<-]+++++
+++++>>[<<+>>>>+<<-]++++[>+++++<-]>>[<+<+>>-]>+++++[<++++++
+>-]<.<<<<-----.+++++.>>-.<<--.>>>---.<+.+.>>---.<<<.>>--.+
.<-.+++++.<<+++.<++++++.>>>-.<++.<<<.>>>>+.<<-.>>>.>.<<<<-.
>>--------.<<----.+++++.<------.+.<.>>>>>+++++++.<<<<<.>>>>
>>....<<<<++.++.---------.+++++.>>>-------.<+++++.<<<-.----
--.>>>++.---.<<--..+++.>>>>.<+++.<<<.+++.------.>>-.>>+.-<<
--------.<<++.<.+++++++.>>---.<<<.>>>>>>....<<<<++++.>>++++
+++++.>---.+.<<<.----.>>>>.<<<<<+++++++.>>.<<<.>>>>>++++++++.
0274デフォルトの名無しさん
2010/05/29(土) 07:48:52いまどき文字列出力くらいは拡張命令でやるのが常識だぞ
いくらなんでも非効率的に過ぎる
#!/bin/bf
printf("HelloWorld\n")
0275デフォルトの名無しさん
2010/05/29(土) 11:43:29BFなんて実用目的に使うものじゃなくて、パズル感覚で遊ぶものなんだから
そっちの方が邪道だろw
0276デフォルトの名無しさん
2010/05/29(土) 13:01:040277デフォルトの名無しさん
2010/05/29(土) 16:20:38+-で操作して
.で鳴らす
とか考えたけどハードというか実装依存だね
0278デフォルトの名無しさん
2010/05/29(土) 16:24:55よく考えたらそんな技術無かった。
0279デフォルトの名無しさん
2010/05/29(土) 16:33:02三角波でド〜↑のドまでの単音ファイルを用意して
数値によって再生
0280デフォルトの名無しさん
2010/05/30(日) 03:33:27音の長さや音色、テンポ、スケール、和音なんかを扱える仕様を考えてる
今日はもう寝るがな
0281デフォルトの名無しさん
2010/05/30(日) 03:42:12ソースきぼん
0282デフォルトの名無しさん
2010/05/30(日) 03:53:02javaだけど、思い出しつつ調べつつ書いた汚いソースだぞ
すぐには見せられんわ
文字コードを音階に対応させて再生してるだけだし
一応スクリーンショット
蛙の歌を再生中
http://www.dotup.org/uploda/www.dotup.org924517.png
0283282
2010/05/30(日) 20:14:49中のtxtをソフトの左の欄にはっつけてrunしてみて下さい!
XPなら動くと思います。
midi音源にMicrosoft GS Wavetable SW Synthを使用してます。
http://www.dotup.org/uploda/www.dotup.org925971.zip
あ、もちろん実行は自己責任で。
0284282
2010/05/30(日) 22:07:16命令の数を4096個まで実行可能にしたよ。
スペランカーフルだよ。
http://www.dotup.org/uploda/www.dotup.org926263.zip
0285デフォルトの名無しさん
2010/05/31(月) 01:46:400286デフォルトの名無しさん
2010/05/31(月) 03:05:010287デフォルトの名無しさん
2010/05/31(月) 12:48:23ちなみにwindowCloseイベントくらい処理してほしかったなぁ
0288282
2010/05/31(月) 12:52:12何も起きないってどういうことですか?
ちゃんとクローズしますよ!初期化に失敗すると閉じないのかなぁ?
休日をそれで潰しちゃったのでツケを払うのに今忙しいんです。
ごめんね><
0289282
2010/05/31(月) 17:58:07■インターフェイス編
・画面左欄がソース、右欄がアウトプット
・runすると同時にsetされます
set状態ではソースの変更は出来ません
set/unsetボタンで解除できます
・下の欄がインプットです
','でインプット欄の文字が1文字読み込まれます
・stepボタン右のlabelにはプログラムカウンタが表示されます(正直あまり意味ない)
・アウトプット欄には通常のbrainfuckで出力される文字のみが表示されます
■MIDI編
・MIDI出力には標準で"Microsoft GS Wavetable SW Synth"を使用しています
一応、引数により任意のデバイスを使えます 例 brainmidi.jar "Java Sound Synthesizer"
起動時にSystem.out.printでコンピュータ内のデバイス名をコンソールに列記してますが、私はjar実行ファイルでのコンソール出力を知るすべを知りません\(^o^)/
・デバイスのオープンに失敗してもエラーはでません
・文字コードどmidi出力の対応表です
33〜123 : 音を出す
1 + 引数 : テンポを引数に設定
動作報告がない
0290282
2010/05/31(月) 18:09:472 + 引数 : 引数の音数を同時に発するように設定します
3 + 引数 : 音の長さを設定します 引数は0〜5までそれぞれ16分音符、8分音符、4分音符、3分音符、2分音符、全音符に対応します
* + 引数 の表記は*を出力した後引数を出力するという意味です
走り書きでごめんなさい
そして、見直すべき所がいっぱいですね
動作報告や反応がないのでどうしていいやら^^;
もうそんな下らないものはいいというのであれば去ります
もっと改良してというのであれば頑張ります
長文すいませんでした
0291デフォルトの名無しさん
2010/05/31(月) 19:39:12Win7+JDK6だとbrainmidi.jarをダブルクリック
×ボタン(WindowClose)をクリック
無反応になるのよ
あとサンプルのsperanka.txtをエディタで開いて左ペインに貼り付けてからrunをすると
ウィンドウがすべてグレー(選択不可)になっているにも関わらず何もおきない(CPUも食わない)
になる
音源ってJavaからのアクセスのために特別な設定が何か必要だったっけ?
きれいじゃなくてもいいからソースがあれば手伝えるのだけど、さすがにjarだけだとめんどくさいんだ
0292282
2010/05/31(月) 20:05:34原因が分かりました
デバイスオープンに失敗するとデバイスアクセス時に固まるようです
私はwin7は持っていないのですが、Microsoft GS Wavetable SW Synthが入っていないのでしょう
>>291さんのPCに入っているmidi音源を第一引数として指定し実行すれば動くと思います。(必ずダブルクオーテーションで挟むように)
>音源ってJavaからのアクセスのために特別な設定が何か必要だったっけ?
特に必要はないはずです
ソースは仕様見直し、ブラッシュアップ後にうpしようと思います
おそらく数時間後
0293デフォルトの名無しさん
2010/05/31(月) 22:15:53普通に考えてコレが入ってないのあり得ないと思うんだが
デフォルトのMIDI音源だよね?
0294282
2010/05/31(月) 22:39:06ソースと引数指定用バッチファイル同梱です!
ttp://www.dotup.org/uploda/www.dotup.org928595.zip
>>293
確かに入ってないとおかしいですよね。
ほかに原因があるような気がしてきた・・・
>>289の追伸ですが
文字コード32(スペース)は音の鳴らない空ノートを示します
0295デフォルトの名無しさん
2010/05/31(月) 23:08:070297デフォルトの名無しさん
2010/06/01(火) 00:09:14インターネットの普及とインフラ整備によりMIDIは事実上役目を終えた
Vista以降は標準でMIDIの再生など出来ない
おまえだけ浮いているのはそのせい
0298282
2010/06/01(火) 00:25:327,vistaにXPユーザ数は負けたというのか・・・?
そんなことないだろ!ここはム板だぞ!!
XPは現役のはず!
と、茶番はさておき
MIDIの再生は出来ないってのは嘘ですね、流石に^^;
使用できるMIDI音源を指定できるようにはしてますのでvista,7さんも何とか出来るはずです
0299282
2010/06/01(火) 01:23:09tempo
+.-
++++++++++ ++++++++++ ++++++++++ ++++++++++
++++++++++ ++++++++++ ++++++++++ ++++++++++
++++++++++ ++++++++++ ++++++++++ ++++++++++
++++++++++ ++++++++++ .
chord
>++.-.-<
init
>
++++++++++ ++++++++++ ++++++++++ ++++++++++
++++++++++ ++++++++++ ++++++++++ +++++++
main
. ++. ++. +. ++. ++. ++. +.
シンプルにドレミファソラシドを再生します
tempo chordの部分を省いてもらっても鳴ります
ソース欄に +[,.]
インプット欄に MOQRTVXY
でも同じようになります
ではおやすみなさい
0300デフォルトの名無しさん
2010/06/01(火) 05:08:18java synthつかってみた、感動した
0301デフォルトの名無しさん
2010/06/01(火) 08:08:410302282
2010/06/01(火) 08:10:44動作報告ありがとうございます!
実は私の環境ではJava Sound Synthesizerが鳴らないんですよ・・・
ググると
>Java標準のシンセ(Java Sound Synthesizer)にインストゥルメントがロードされていないため
とか出るんですけど
いまいちよく分かりませぬ/(^o^)\
0304デフォルトの名無しさん
2010/06/14(月) 18:27:230305デフォルトの名無しさん
2010/06/14(月) 18:37:05小文字で定義、大文字で展開とか。ついでに数字一文字で繰り返しとか。
例えばこんな感じ。
9+[>8+>9+++>5+<<<-]>.>++.+++++++..+++.>-.a---AAAA.<++++++++.AA--.+++.AA.AA--.>+.
いかん、例が悪くて余り書き易そうに見えないw
0306デフォルトの名無しさん
2010/06/14(月) 18:42:18誰でも思いつきそうなのは勘弁
0307282
2010/06/14(月) 19:16:140308デフォルトの名無しさん
2010/06/14(月) 19:17:59恥ずかしい
0309デフォルトの名無しさん
2010/06/14(月) 23:15:410310デフォルトの名無しさん
2010/06/14(月) 23:51:07和んだw
0311デフォルトの名無しさん
2010/06/23(水) 00:03:380312デフォルトの名無しさん
2010/06/25(金) 03:39:190313デフォルトの名無しさん
2010/07/09(金) 21:37:29スレチだったら申し訳ないが何でhelloworldになるのか分からないのがある
一応このスレの例のhelloworldは理解してるつもりです
0314デフォルトの名無しさん
2010/07/09(金) 23:12:060315デフォルトの名無しさん
2010/07/09(金) 23:33:26={+++++++>--->+<<!-.これでHが表示されますが何故でしょう?
=!でループするのは分かってますが、考えると++しすぎて数値が何千って行っています
Hは72なのに何故Hが画面に出るのかが分からないです
今日学校で見つけてからずっと悩んでいます
0316デフォルトの名無しさん
2010/07/09(金) 23:33:350317デフォルトの名無しさん
2010/07/10(土) 02:00:020318名無しさん@そうだ選挙に行こう
2010/07/10(土) 04:00:090319名無しさん@そうだ選挙に行こう
2010/07/10(土) 05:20:18これか。
0320名無しさん@そうだ選挙に行こう
2010/07/10(土) 05:29:29読んだ。
1セルがmod 256の数値だと仮定して、
終端ポインタがmem[30000]をさしていると考えると
最初のセルは
7 * (30000-1) -1 = 72
になるんだと思われる。
拡張命令の是非はさておき、
メモリのサイズが変わると結果も変わるので、
俺はあまり意味のあるプログラムだとは思わんね。
0321名無しさん@そうだ選挙に行こう
2010/07/10(土) 08:20:05でもどうして256何ですか?
0322名無しさん@そうだ選挙に行こう
2010/07/10(土) 08:55:400323名無しさん@そうだ選挙に行こう
2010/07/10(土) 09:53:40符号無しで0から255の意味が最初分かりませんでしたが255から+したら0に戻るんですね
何千って数値が行くと思っていました
0324名無しさん@そうだ選挙に行こう
2010/07/10(土) 14:12:28どうでもいいけどLinuxの実行バイナリのサイズ大きいな
静的リンクするとこんなにでかくなるのか
以下に本元の小ささの凄さが分かるわ
0325デフォルトの名無しさん
2010/07/12(月) 01:23:090326デフォルトの名無しさん
2010/07/12(月) 02:27:300327デフォルトの名無しさん
2010/07/12(月) 11:10:21JSとかは良く見るけどさ
0328デフォルトの名無しさん
2010/07/12(月) 12:23:37一番多くサンプルあるのがCだろ
実装が楽だし、よくポインタ理解度チェックとして初心者の練習問題に使われてるし
歴史的経緯から考えてもCが多いだろうよ
0329デフォルトの名無しさん
2010/07/12(月) 15:11:140330デフォルトの名無しさん
2010/07/12(月) 17:07:05楽しさなら個人的にはarmの方が上だなぁ
0331デフォルトの名無しさん
2010/07/15(木) 21:10:210332デフォルトの名無しさん
2010/07/15(木) 23:11:090333デフォルトの名無しさん
2010/07/16(金) 15:37:19[[]]とか中に複数あるならいいんだけど、[][]と離れると動かない
0334デフォルトの名無しさん
2010/07/16(金) 19:07:44"]"が来たらカウンタを増やす
"["が来たらカウンタを減らす
カウンタが0のときに"["が来たら、そこに飛ぶ。
でいいと思うよ。
0335デフォルトの名無しさん
2010/07/22(木) 03:16:23http://extreme.pcgameshardware.de/attachments/64656d1232652813-fallout-3-das-uberlebenshandbuch-terminal-60-.jpg
0336デフォルトの名無しさん
2010/07/22(木) 08:14:33構文も何もないよ。
0337デフォルトの名無しさん
2010/07/22(木) 12:25:380338デフォルトの名無しさん
2010/07/22(木) 12:43:24それをビルドして実行させてみた
++++++++[****{*****{*************}}-]***|>{{|+>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|<<<
<<<<<<<<<<<++++++>----->++++>+++++++++++++>---->--->}}&{>&++++++++++++++++++++>
+++++++++++>++++++++++++>---->+>+++++++>&++++++>>|}|+++++++++++++++++++>{{{&+++
+++++++>}|+>|++++++>|++++++++++++>}}|--->{{|+++++>|------->|+>|++++++>}|>|+>{|+
++++++++++++++++++>++++++++++>}}///|>|>|>|>{{|++++++++>|+++++++++++++>|++++++++
++++>|+++++++++++>}|>}|++>{{|>++++++[<----->-]<-->|--->|++++>|++++>|+++++++>}|+
+++>}|>{{|+++++++++++++++>|+++++++>|++++++++++>|++++>|---->}}|+>|++>{|+>|>++++[
<+++++>-]<->++++++++++>}|>|>|>|>{{|++++++++++>|--->|++++++++++++>|+++++++++++++
>|++++++++++>|++++++>}}|>{|++++++++>|>++++[<+++++>-]<->++++++++++>{|>+++++[<+++
+>-]<+@
./braineasing hello.txt > hello.c && gcc -o hello.o hello.c && ./hello.o && rm hello.o hello.c
ふぅ…何やってるんだろ俺…
0339デフォルトの名無しさん
2010/07/22(木) 14:09:55俺にその暇分けろ!
0340デフォルトの名無しさん
2010/07/22(木) 15:43:410341デフォルトの名無しさん
2010/07/22(木) 15:47:440342デフォルトの名無しさん
2010/07/22(木) 19:13:26何時間掛かったんだ?
0343デフォルトの名無しさん
2010/08/19(木) 23:07:17SqueakやScartch 系列のビジュアルプログラミング言語だが、かなり難解
衝突プログラミングがキモ
プログラミン | 文部科学省
http://www.mext.go.jp/programin/
ドラッグ&ドロップで簡単プログラミング 文科省が子ども向けに公開、まとめサイトも登場 - ITmedia News
http://www.itmedia.co.jp/news/articles/1008/19/news082.html
まとめ:プログラミン作品ギャラリー 『プログラミンでつくったよ!』を集めるサービス
http://programin.jp/
サンプルのジャンケンとシューティングを見ればできることがわかるとおもう
加算器
http://www.mext.go.jp/programin/share/?share_id=afde3d7c491b1839b35fe89ab8bf9dd0
0344デフォルトの名無しさん
2010/08/20(金) 22:13:12作りかけのbrainfuck: http://bit.ly/cpn2FL
瓶詰堂日記
http://www.binzume.net/diary/2010-08-20#A1
0345デフォルトの名無しさん
2010/08/20(金) 22:13:350346デフォルトの名無しさん
2010/08/20(金) 23:05:280347デフォルトの名無しさん
2010/08/20(金) 23:58:380348デフォルトの名無しさん
2010/09/13(月) 05:39:260349デフォルトの名無しさん
2010/09/25(土) 22:52:380350デフォルトの名無しさん
2010/09/26(日) 05:21:38読むのは無理だろw
0351デフォルトの名無しさん
2010/11/02(火) 02:10:50http://www.boleros.x0.com/doc/ktlwiki/index.php?Braincunt
特別な技術も何もありませんが。
0352デフォルトの名無しさん
2010/11/02(火) 02:15:560353デフォルトの名無しさん
2010/11/02(火) 07:58:58誰もそれでプログラムを書こうとするはずない
0354デフォルトの名無しさん
2010/11/02(火) 08:17:330355デフォルトの名無しさん
2010/11/02(火) 12:20:500356デフォルトの名無しさん
2010/11/02(火) 13:32:32それを@とすると、
< → @>@
- → @+@
と書き換えればおk
0357デフォルトの名無しさん
2010/11/02(火) 13:40:540358デフォルトの名無しさん
2010/11/02(火) 13:43:280359デフォルトの名無しさん
2010/11/02(火) 15:38:46> → 000
< → 001
+ → 010
- → 011
っていうふうに置き換えれば記号数は2個だ。
0360デフォルトの名無しさん
2010/11/02(火) 16:24:23記号数1
0361デフォルトの名無しさん
2010/11/02(火) 16:48:19;;;lllllllllli:l::l;;;'I:i:llll;;llllll;llllllllll::'Illlll
lllll;;i::l;;;;l::'Illlli;lllll:'I;;i:l:l;;'I;llllli:llllll
l;'I:.::::'''''.lllll.;;'.::''.;;;'''.:l.l.;;'''.:::.;;''.l
.:'.lllll.::lll.:llllll.;;;'.:ll.:::.;;;;l.::'.;;;.;.::::'.
;;''''''''.::''''.lllll.:''''''.l.:.;;;;;lllllll.:::::.;;;;
;;....::::ll.ll.'''''''''.lllll.;;;'''''''.:lllll.:::'.''''
''.;;;ll.'''.::''..lll.;;;;.:lll.:::.lll.''''''.;;'.;;l.'::
''''''''.::ll.:.lllllll.;;'''.:::.;;;;;;....::::llll.;;llll
lllll.;'''.l.:::.''''.;;;;.:::::lllllll.;;.:::.;;;;;llllllll.
0362デフォルトの名無しさん
2010/11/02(火) 17:04:380363デフォルトの名無しさん
2010/11/02(火) 19:12:54それらは命令をエンコードして記号数を減らしてるだけで、命令数は相変わらず8だよね。
0364デフォルトの名無しさん
2010/11/02(火) 20:19:410365デフォルトの名無しさん
2010/11/02(火) 21:14:310366デフォルトの名無しさん
2010/11/02(火) 21:15:190367デフォルトの名無しさん
2010/11/02(火) 21:27:380368デフォルトの名無しさん
2010/11/02(火) 21:31:43>開発者Urban Müllerがコンパイラがなるべく小さくなる言語として考案した。
これ大事
処理が増えてはダメだろ
0369デフォルトの名無しさん
2010/11/02(火) 21:34:53コンパイラの言語にもよるからなぁ
0370デフォルトの名無しさん
2010/11/02(火) 22:53:300371デフォルトの名無しさん
2010/11/03(水) 01:30:040372デフォルトの名無しさん
2010/11/03(水) 01:42:320373デフォルトの名無しさん
2010/11/03(水) 05:08:070374デフォルトの名無しさん
2010/11/06(土) 15:15:150375デフォルトの名無しさん
2010/11/07(日) 15:01:520376デフォルトの名無しさん
2010/11/09(火) 02:20:18つ http://ideone.com/1cNvO
URLに圧縮されてるぞw
0377デフォルトの名無しさん
2010/11/09(火) 07:46:10これは知らなかった
確かにそれっぽいけど便利なのか・・・?
0378デフォルトの名無しさん
2010/11/10(水) 09:14:31BrainFuckに限らず、長いソースを掲示板に貼るはるとか、
2chに貼るとソースコードのライセンスうんたらかんたらとか
その他のサンプルソース実際に動かしたらこうだぜ、ってときに便利だよ
0379デフォルトの名無しさん
2010/11/10(水) 09:15:47一応マジレスすると、短縮URLみたいなもんだろうけどね
DBのidみたいな一意のもを常に短くなるようにhash化してるようなもんだろ。
多分同じソースコードを貼っても同じURLにならないと思うよ
0380デフォルトの名無しさん
2010/11/10(水) 12:24:02処理結果が表示されてたから処理系組み込んであるのかなって思ったけど
やっぱりこれbrainfuckを動かすためのものじゃないよね
URLはハッシュだろうと単にBFコードを圧縮したものだろうとどっちにしろ読めないからいいけど
やはり専用のサイトがあったほうが便利
0381デフォルトの名無しさん
2010/11/10(水) 12:33:41brainfuckを含む多言語に対応してるだけ
0382デフォルトの名無しさん
2010/11/10(水) 13:06:08使い方はよくわからんがすげーな
0383デフォルトの名無しさん
2010/11/11(木) 09:20:46疑問に思ったら、トップページくらい見ろw
http://ideone.com/
この手のオンラインの処理系はいくつかある
今気づいたら、ここUnlambdaやwhitespaceまであるし誰得なんだよ
0384デフォルトの名無しさん
2010/12/10(金) 18:05:070385デフォルトの名無しさん
2010/12/24(金) 23:32:390386デフォルトの名無しさん
2010/12/24(金) 23:33:41mallocできねえの?
0387デフォルトの名無しさん
2010/12/24(金) 23:39:590388デフォルトの名無しさん
2010/12/24(金) 23:42:19bfでCのソース吐き出して
コンパイルコマンド打ち込め
0389デフォルトの名無しさん
2011/02/01(火) 16:40:330390デフォルトの名無しさん
2011/02/17(木) 07:30:400391デフォルトの名無しさん
2011/02/17(木) 14:17:38ありがとう
0392デフォルトの名無しさん
2011/03/04(金) 21:15:22.67出てきたんですけど・・・・どうすればいいんですか?
0393デフォルトの名無しさん
2011/03/05(土) 00:09:56.020394デフォルトの名無しさん
2011/03/08(火) 04:24:09.650395デフォルトの名無しさん
2011/03/08(火) 11:11:18.900396デフォルトの名無しさん
2011/03/30(水) 01:34:04.990397デフォルトの名無しさん
2011/03/30(水) 06:47:20.33チューリングマシンをエミュレートすることができればチューリング完全だけど、
ほとんど自明だからだれもやらないんじゃね?
0398デフォルトの名無しさん
2011/03/30(水) 11:05:45.530399デフォルトの名無しさん
2011/03/30(水) 17:53:35.05ありがとうございます
0400デフォルトの名無しさん
2011/04/23(土) 13:57:46.22http://up3.viploader.net/pc/src/vlpc007110.png
ぼくのかんがえたさいきょうのぶれいんふぁっく^^;;;;;;;;;;
0401デフォルトの名無しさん
2011/04/23(土) 15:34:09.43二重の仮想環境を作れば、ほぼなんでも出来るようになるな
0402デフォルトの名無しさん
2011/04/23(土) 15:51:44.400403デフォルトの名無しさん
2011/04/23(土) 22:40:02.520404デフォルトの名無しさん
2011/04/24(日) 01:47:20.62手軽にできん
機能を絞るならいけるかもだが
0405デフォルトの名無しさん
2011/04/24(日) 23:18:51.42bfで出力した文字をコマンドラインに投げればいい
0406デフォルトの名無しさん
2011/04/27(水) 00:54:00.81文字しかつくれないの?
0407デフォルトの名無しさん
2011/04/27(水) 01:11:52.64なんでもっていう意味は、C言語やFortlanみたいな普通の言語と
同じだけの表現力があるっていうこと
たとえば、C言語で書ける処理は、かならずBFでも書ける
もちろん書きやすさにはだいぶ違いがあるけれど
0408デフォルトの名無しさん
2011/04/27(水) 02:49:19.21メモリ配置とかシステムコールみたいな
主に番地を割り当てるのかね
純粋にBFだけ考えると入出力と計算、ループだけ
これ単体でグラフィカルなプログラミングとかは無理って解釈で良いと思うよ
0409デフォルトの名無しさん
2011/04/27(水) 03:59:46.570410デフォルトの名無しさん
2011/04/27(水) 04:41:17.72BFが気になったからBFでプログラムの勉強してみようかなと思ったんだけど
やっぱCとかからはじめたほうがいいのかね
0411デフォルトの名無しさん
2011/04/27(水) 04:45:52.77ネタ言語だぞ
これで学べることはかなりプリミティブなものに限定される
0412デフォルトの名無しさん
2011/04/27(水) 05:08:41.41cとは全く別物
何言語から始めるかは目的によるが
そういう話はこのスレで扱わない
この板にそういうスレあるから見たらいいよ
0413デフォルトの名無しさん
2011/04/27(水) 09:56:47.27その点がBFの存在意義なんじゃないかと思っている。
マトモにプログラム書く気でBFを使うのは、やめとけ。
0414デフォルトの名無しさん
2011/04/27(水) 10:53:58.080415デフォルトの名無しさん
2011/04/27(水) 11:37:48.30今時ならエミュレータでも充分実用的な速度が出るだろう。
0416デフォルトの名無しさん
2011/04/27(水) 11:45:50.320417デフォルトの名無しさん
2011/04/27(水) 11:51:06.410418デフォルトの名無しさん
2011/04/27(水) 15:30:13.350419デフォルトの名無しさん
2011/05/01(日) 08:21:07.40エレガントかどうかは分からんが、これくらいしか思い浮かばない。
API呼び出し命令を追加。
(関数ポインタか何か)APIを識別する数字と、APIに渡す引数をメモリにセットしてから
API呼び出し命令を処理すると、APIが呼ばれ、戻り値がセットされる。
0420デフォルトの名無しさん
2011/05/01(日) 10:20:12.920421デフォルトの名無しさん
2011/05/01(日) 11:21:13.15もしくはシステムコール呼び出しか…w
0422デフォルトの名無しさん
2011/05/03(火) 00:12:38.860423デフォルトの名無しさん
2011/05/06(金) 10:25:20.65プログラマ向けのパズルみたいなものですよ
0424デフォルトの名無しさん
2011/06/05(日) 11:24:55.74http://nlab.itmedia.co.jp/nl/articles/1106/02/news040.html
0425デフォルトの名無しさん
2011/06/05(日) 16:17:20.90長門有希とかあったよなぁ
0426デフォルトの名無しさん
2011/06/05(日) 16:40:10.650427デフォルトの名無しさん
2011/06/05(日) 17:21:52.560428デフォルトの名無しさん
2011/06/05(日) 17:30:41.000429デフォルトの名無しさん
2011/06/05(日) 17:46:47.91標準入力を標準出力にコピー
ほむ ほむほむほむほむ ほむ ほむほむほむ ほむ ほむほむほむ ほむほむほむ
0430デフォルトの名無しさん
2011/06/05(日) 18:22:55.31うまくコンパイルできないのだが。
0431デフォルトの名無しさん
2011/06/05(日) 20:18:58.750432デフォルトの名無しさん
2011/06/06(月) 00:58:31.39ttp://code.google.com/p/awib/
0433デフォルトの名無しさん
2011/06/06(月) 20:26:44.71へー、こりはおどきました。thanks
0434天使 ◆uL5esZLBSE
2011/07/02(土) 11:22:56.870435デフォルトの名無しさん
2011/07/02(土) 19:43:24.37マルチスレッド対応まだ?
SIMDいつ対応するの?
グラフィックどうするの?
0436天使 ◆uL5esZLBSE
2011/07/04(月) 16:35:35.78↓↓↓↓↓↓
「「「「「「「「「 入力命令もあるよ 」」」」」」」」」(キリッッ!!!!キリッッ!キリッきリッッッッッ
↑(キリきリッ!!!!
↓↓↓↓↓↓↓↓↓
「「「「「「「「「 標準入力を標準出力にコピー 」」」」」」」」」(←キリッッ!!ッッッッ!!!!
↑↑↑↑↑↑↑↑↑(キリッッ!!!!
↓↓↓↓↓↓↓↓↓↓
「「「「「「「 ほむ ほむほむほむほむ ほむ ほむほむほむ ほむ ほむほむほむ ほむほむほむ 」」」」」」」(キリッ!キリッ!!!キリ!!!!!!
↑↑↑↑↑↑↑↑↑(キリッ!!
死ねゴミ
0437デフォルトの名無しさん
2011/07/16(土) 13:33:21.820438デフォルトの名無しさん
2011/07/16(土) 14:03:33.90リ ポインタをデクリメント
↑ ポインタが示すメモリ位置のデータをインクリメント
↓ ポインタが示すメモリ位置のデータをデクリメント
き ポインタが示すメモリ位置のデータを出力
り ポインタが示すメモリ位置のデータに入力
「 ポインタが示すメモリ位置のデータがヌルなら対応する」までジャンプ
」 ポインタが示すメモリ位置のデータがヌルじゃないなら対応する「までジャンプ
0439デフォルトの名無しさん
2011/08/26(金) 08:39:55.960440デフォルトの名無しさん
2011/10/10(月) 17:08:24.66誰得w
0441デフォルトの名無しさん
2011/10/10(月) 18:04:50.600442デフォルトの名無しさん
2011/10/17(月) 14:57:12.470443デフォルトの名無しさん
2011/10/20(木) 03:13:06.370444デフォルトの名無しさん
2011/10/21(金) 00:33:17.39出てきたんですけど・・・・どうすればいいんですか?
0445デフォルトの名無しさん
2011/10/21(金) 10:54:05.09日本語でOK!
つーか、きっとスレ違いだ。
0446デフォルトの名無しさん
2011/11/19(土) 20:12:50.22俺の頭じゃやり方が思いつかなかった
0447デフォルトの名無しさん
2011/11/20(日) 00:49:41.35ループを使うんだよ
100=10*10
++++++++++[>++++++++++<-]
0448デフォルトの名無しさん
2011/11/20(日) 03:28:44.770449デフォルトの名無しさん
2011/11/20(日) 06:07:40.340450デフォルトの名無しさん
2011/11/20(日) 06:16:52.900451デフォルトの名無しさん
2011/11/20(日) 13:23:17.26[-]>++++++++++[<++++++++++>-]<[>[-]<[->+<]>-]
0452デフォルトの名無しさん
2011/11/20(日) 22:01:13.380〜1番地は破壊される
[-]>[-]++++++++++[<++++++++++>-]<--
[[>+<-]>>[<<+>>-]<-]>>
100まで行った後にデータを元に戻しながら0まで戻るのも書いてみたけど、
合計すると100バイト超えちゃったよ
■ このスレッドは過去ログ倉庫に格納されています