2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

BrainFuck Part.3 <[+-.,]>

1 :デフォルトの名無しさん:2009/01/08(木) 12:09:18 .net
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 :デフォルトの名無しさん:2009/01/08(木) 12:11:32 .net
Brainfuck(ブレインファック)はプログラミング言語の一つ。
名称が良いものではないため、Brainf*ckと呼称するのが一般的。

開発者Urban Müllerがコンパイラがなるべく小さくなる言語として考案した。
実際、Müllerが開発したコンパイラのサイズは123バイト(キロバイトではない!)、
インタプリタは98バイトとなっている。

処理系には十分なサイズのbyte型配列とその要素のひとつを指すポインタがある。
ポインタを「>」「<」命令で移動させながら、そのポインタが指す値を増減させて
処理を進めていく(Hello world参照)。

実用性はほとんど無いように思われるが、これだけでチューリングマシンで実行可能な
あらゆるプログラムが記述できる(チューリング完全である)とされている。


3 :デフォルトの名無しさん:2009/01/08(木) 12:20:32 .net
<>参考サイト
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 :デフォルトの名無しさん:2009/01/08(木) 12:25:23 .net
<>亜種

長門有希
(リンク先行方不明)

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 :デフォルトの名無しさん:2009/01/08(木) 13:14:46 .net
こんな本が出てるらしい

ttp://book.mycom.co.jp/book/978-4-8399-2784-4/978-4-8399-2784-4.shtml
> あなたは「+-><.,[]」の8つの記号しかないプログラミング言語や、
> 空白だけで構成されるプログラミング言語があるのをご存じだろうか。
> 本書では、そんな奇妙な言語(Esoteric Language)を題材に
> プログラミング言語の作り方を解説します。

6 :デフォルトの名無しさん:2009/01/08(木) 13:15:32 .net
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 :デフォルトの名無しさん:2009/01/08(木) 13:19:17 .net
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 :デフォルトの名無しさん:2009/01/08(木) 13:21:41 .net
punctfuck.rb

$___,@_,@__,$_=(@@__="")=~//,?#=~/$/,->(_){_<(__="####"=~/$/)**__&&(@@__<<
_;@__[_+@_])},[*$<]*@@__;@__[$___];$____,$_,@___,$__,@__=$_[@_+($_+?!=~/!/
)..-@_],$`,[],[],->(_){(__=$_[_];__=~/[><+\-\.,]/?$__<<$_[_]:__==?[?(@___,
$__=$__,[]):__==?]?$__=@___<<$__:__==$\?$\:_)&&@__[_+@_]};@__[$___];@___,
$_,@@_,@__=[],[],$___,->(_){$_[@@_]||=$___;({?>=>->{@@_+=@_},?<=>->{@@_-=
@_},?+=>->{$_[@@_]+=@_},?-=>->{$_[@@_]-=@_},?.=>->{$><<@@__[$_[@@_]]},?,=>
->{$____=~/^./&&($____=$';$_[@@_]=@@__=~/#{((__,=[*?/..?:]&[$&];__)||(__,=
[*?@...?[]&[$&];__)||(__,=[*?`...?{]&[$&];__))&&__!=?{?$&:'\\'+$&}/)},$\=>
->{$\}}[$__[_]]||->{$_[@@_]!=$___&&(@___<<[$__,_-@_];$__=$__[_];@__[$___]
*@___,($__,_)=@___);""})[]&&@__[_+@_]};@__[$___]

■[Ruby] 記号だけで brainfuck インタプリタ
http://d.hatena.ne.jp/ku-ma-me/20080626/p1

9 :デフォルトの名無しさん:2009/01/08(木) 13:24:43 .net
今までに作ったソフト - 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 :デフォルトの名無しさん:2009/01/08(木) 13:34:15 .net
ttp://www.esolangs.org/wiki/Quantum_brainfuck


11 :デフォルトの名無しさん:2009/01/08(木) 13:36:49 .net
ttp://hoznas.blogspot.com/2008/06/brainfukexcel.html
ttp://unkun.ikaduchi.com/excel_bf/index.html


12 :デフォルトの名無しさん:2009/01/08(木) 13:42:24 .net
ttp://www.hevanet.com/cristofd/brainfuck/

ttp://jp.youtube.com/watch?v=GcDshWmhF4A

#…今指すメモリに西暦の上2桁入力
 次のメモリに下2桁
 次のメモリに月入力
 次のメモリに日入力
#
> >[> > >+<<<-]> > >+[<+++++++++++++>-]+++++<[> >+>+<<<-]> > >[<<<+> > >-]<<[>>
+>+<<<-]> > >[<<<+> > >-]<<[->-> >-<<[[>+<-]> >+<<]>[<+>-]>[<<<<[> >+>+<<<-]> >
>[<<<+> > >-]> >+<+]<<<]>[>+<-]<<[>+>+<<-]>[<+>-]> >[<->-]> >[<<<<+> > > >-]<<<
[-]<<<<<<++[> > > > >+<<<<<-]> >+++++[> > >+<<<-]> > > >+++++++<[> >+>+<<<-]> >
>[<<<+> > >-]<<[> >+>+<<<-]> > >[<<<+> > >-]<<[->-> >-<<[[>+<-]> >+<<]>[<+>-]>[
<<<<[> >+>+<<<-]> > >[<<<+> > >-]> >+<+]<<<]>[>+<-]<<[>+>+<<-]>[<+>-]> >[<->-]>
>[<<<<+> > > >-]<<++++++++[<++++++>-]<.

今日の曜日を計算
0…月曜日 1…火曜日 ・・・ 6…日曜日

閏年の厳密な計算が面倒だったので2008〜2011までしか通用しないのと、
除算は前スレの誰かのを流用しただけなので、もっと短くできる。(メモリを破壊してもいいので)


13 :デフォルトの名無しさん:2009/01/08(木) 13:47:25 .net
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 :デフォルトの名無しさん:2009/01/08(木) 13:58:25 .net
ttp://groups.google.co.jp/group/brainfunck?hl=ja


>++++++++++[>+++++
+++>+++++++++++>++
++++++++++[<]>-]>--
.>>---.<--..<++.>+++.

15 :デフォルトの名無しさん:2009/01/08(木) 13:59:38 .net
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 :デフォルトの名無しさん:2009/01/08(木) 14:00:38 .net
>++++++++++[>+>+++>++++++++++++[<]>-]> > >++++........<<+++.---.> >..<++..
..>...<<+++.---.> >..<....>...<..................>..<.............>...<.................>..<<+++.---.>
>.......<...>..<..>..<..>.....<..................>..<............>.....<..>..<..>..<<+++.---.> >..<..
..>..<..>....<...>..<...>..<...>..<.>..<.>....<..>......<.>..<...>..<.>..<...>..<.>..<.>..<<++
+.---.> >..<.....>..<.>..<......>......<...>..<.>...<...>..<...>..<...>..<...>..<.>..<......>...<<
+++.---.> >..<....>...<.>..<.....>..<...>..<...>..<.>..<....>..<...>..<...>..<...>..<.>..<...>..
<.>..<.>..<<+++.---.> >........<..>..<......>....<.>...<.>..<.>..<....>..<...>..<....>.....<...>
.....<..>..<...>..

17 :デフォルトの名無しさん:2009/01/08(木) 14:02:02 .net
ttp://www.nishiohirokazu.org/blog/2007/02/grinedit_6.html


18 :デフォルトの名無しさん:2009/01/08(木) 14:05:00 .net
GZip+Base64

H4sICFJPkEYAAIGfdzVLMjdCRnIyAJWV63ECMQyE/9/MVSKUCjRuxOP+28jntc6CC0wSAcaWVmu9
Dlprj9YM6bFWX9J88I7wfplrRS6zQeDdIh5C2XksimIRg8doXR+z4ikqAJZsHBC0HpLzYJFvlw1O
1g4QlsCJ2xciMAhkOsILTJ9QCHk1jE/hGTYL//vSfVQGEMygz4PMuH7lwd4b6SDAbVTGlS9kYCc4
PcE7O4UeM0YREztwpaM4MyXkusDHVLUsCQifBNMGYJQQ44apQgmDstTdLz1hpzKUecJsS1dnOkFm
WJGNHChzLobi037sC4d/bth5fGhZ9YsVk4dr2SvxbnS7vNY87j7da9VupZLVohAAoiCpPo89eYS8
mjA3su6aIcqAwCZN8gxobrdzhJF7ew5BGFs8bB5EOldpsICpTZZljRvkXeO35xHBVW/rpnN1Evv7
7lXPLLtvegrL9e4mYtdFsBrqbLdY8AMsV2nkAIrpGQswiVCqMkAmCBG9UkAgpb96iVlgdLkXC1ln
nXZ98utDld7U6Pl6Zf1aiIoI+wX9T9wwVuRycLmjgQIVekuFiJbOpcn5cDSzplINPYU2/aoW9bOd
gkkpOslnf3R7ISZ1wGL1zFwV8szWfv6OKY0vNa+odF7Su2HSPD5++ZsZ31FFeUKKBgAA

19 :デフォルトの名無しさん:2009/01/08(木) 14:13:48 .net
= で式の終了。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 :デフォルトの名無しさん:2009/01/08(木) 14:24:15 .net
>>1
+++++++++[>+++[>+++++<-]<-]>>++.<++++++[>+++++++<-]>.

21 :デフォルトの名無しさん:2009/01/08(木) 15:49:57 .net
すみませんoctaveのプログラムについて聞きたいのですが・・・
どこで聞いたらいいでしょうか??この板にくるのは初めてなもんでorz
スレチですみません、誰か心やさしい人教えてください


22 :デフォルトの名無しさん:2009/01/08(木) 15:57:11 .net
データ解析ツールoctaveを語ろう
http://pc11.2ch.net/test/read.cgi/unix/1086016412/

23 :デフォルトの名無しさん:2009/01/08(木) 16:15:31 .net
>>22
ありがとうございます!

24 :デフォルトの名無しさん:2009/01/08(木) 21:44:16 .net
前スレでBFの出力すぐ見たいっていう話があったので
ブックマークレット作ってみることにした


25 :デフォルトの名無しさん:2009/01/08(木) 22:27:07 .net
無限ループ判断をどうするかで悩んだら凡人決定

26 :デフォルトの名無しさん:2009/01/08(木) 23:12:08 .net
テストコード
+++++++++++++++++++++++++++++++++++++++++++++++++.


27 :デフォルトの名無しさん:2009/01/08(木) 23:13:19 .net
テストコード
,[.>,]

28 :デフォルトの名無しさん:2009/01/09(金) 00:06:51 .net
BFコードが無限ループする前にJavaScriptが無限ループしてます orz

29 :デフォルトの名無しさん:2009/01/09(金) 00:17:41 .net
無限ループするかどうか判定するブックマークレット

30 :デフォルトの名無しさん:2009/01/09(金) 00:34:13 .net
無限ループする無限ループするかどうか判定するブックマークレット

31 :デフォルトの名無しさん:2009/01/09(金) 00:41:51 .net
無限ループするかどうか判定するブックマークレットが無限ループするか判定させてみよう

32 :デフォルトの名無しさん:2009/01/09(金) 01:45:02 .net
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 :デフォルトの名無しさん:2009/01/09(金) 01:47:57 .net
ブックマークを作成してURLに上の改行取り除いたものをまるごと保存してください
その後BFコードを選択してブックマークを選ぶと実行されます
デフォルトでデバッグモードで起動しますがデバッグをキャンセルすると
その場所から残りをリアルタイムで実行されます

とりあえず FireFox3 では動いた
IE6 だと JavaScript 単体では動くがブックマークレットにすると動かない
たぶんどこかの文字をエスケープする必要があると思う


34 :デフォルトの名無しさん:2009/01/09(金) 01:49:00 .net
コントロールキャラクタ等は全部「.」表示されます
2バイトコードは試したけどまだうまくいっていないので
同様に「.」表示されます


35 :デフォルトの名無しさん:2009/01/09(金) 07:26:31 .net
すげーけど使い勝手悪いね

36 :デフォルトの名無しさん:2009/01/09(金) 07:39:02 .net
alertのpopupじゃなくてwindowのpopupしようとしたら
popupブロックに引っ掛かったのでとりあえずalertにした感じ

改良予定としてはpopupじゃなく画面分割でデバッグ出来て
ここみたいに
ttp://cfs.maxn.jp/neta/onlineBrainFuck.html
実行位置が目視で判るようにしつつワークレジスタも表示出来るといいですね

FireFoxだと動いてIEで動かないときってFireBugでデバッグ出来ないから困りますね orz

37 :デフォルトの名無しさん:2009/01/09(金) 07:41:34 .net
FizzBuzzとか時間掛かるコードだと無限ループしてなくても
FireFoxのwatchdogにつかまって警告でてワロス

38 :デフォルトの名無しさん:2009/01/09(金) 08:46:23 .net
>>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 :デフォルトの名無しさん:2009/01/09(金) 08:49:31 .net
回避方法?
ttp://subsimple.com/bookmarklets/tips.asp#ScriptInclusion


40 :デフォルトの名無しさん:2009/01/09(金) 12:46:24 .net
>>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 :デフォルトの名無しさん:2009/01/09(金) 13:08:31 .net
もうひとつあった
0の状態で[]に突入せずスルーするケースで(そういう書き方が存在するんだね)落ちてる
if(c=='['){}中の
if(!b[m])のelse節にs.push(i);があるけどそこは取ってif(!b[m])の前に移す
if(c=='['){s.push(i);if(!b[m])


42 :デフォルトの名無しさん:2009/01/09(金) 13:25:35 .net
よく見たらその中のwhile中のcontinueが変
JavaScriptスレ池とか言われそうなので
一通り直したらまたうpするかも知れません

43 :デフォルトの名無しさん:2009/01/09(金) 13:43:17 .net
やはり内側のcontinueが外まで抜けることを期待してたバグだった
pushの位置が原因じゃなかったんだな
まさにBFコードが無限ループする前にJavaScriptが無限(ry
いままで良く動いてたなwww


44 :デフォルトの名無しさん:2009/01/09(金) 13:53:21 .net
という訳でバグ修正版う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 :デフォルトの名無しさん:2009/01/09(金) 13:54:46 .net
最初のconfirmはうざければ取っても問題ないと思う
未定義命令もエラー出さずにスキップして良いかもしれない
FizzBuzzもちゃんと一瞬で終わるようになったよ
++++++[->++++> >+>+>-<<<<<]>[<++++> >+++>++++> >+++>+
++++>+++++> > > > > >++> >++<<<<<<<<<<<<<<-]<++++>+++
>-->+++>-> >--->++> > >+++++[->++>++<<]<<<<<<<<<<[->-
[> > > > > > >]>[<+++>.>.> > > >..> > >+<]<<<<<-[> > > >]>[<+
++++>.>.>..> > >+<]> > > >+<-[<<<]<[[-<<+> >]> > >+>+<<<<<
<[-> >+>+>-<<<<]<]>>[[-]<]>[> > >[>.<<.<<<]<[.<<<<]>]>.<<<<
<<<<<<<]


46 :デフォルトの名無しさん:2009/01/09(金) 14:32:52 .net
エラー処理とか>>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 :デフォルトの名無しさん:2009/01/09(金) 15:19:57 .net
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 :デフォルトの名無しさん:2009/01/09(金) 15:20:49 .net
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 :デフォルトの名無しさん:2009/01/09(金) 15:34:29 .net
>>48
この大きさだとIE6のbookmarkletに入りますかね

50 :デフォルトの名無しさん:2009/01/09(金) 18:32:42 .net
>>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 :デフォルトの名無しさん:2009/01/09(金) 19:00:32 .net
>>50

>>16 とか動きます?

52 :デフォルトの名無しさん:2009/01/09(金) 19:14:15 .net
[]の対応がおかしいっぽ

53 :デフォルトの名無しさん:2009/01/09(金) 20:50:36 .net
Rubyで作る奇妙なプログラミング言語
~Esoteric Language~
たちよみしてきた
Brainfuck
じゃなくて
Brainfsck
だっていうのは本当なんだろうか

54 :デフォルトの名無しさん:2009/01/09(金) 21:44:07 .net
本家Wikipediaでbrainfsckで検索するとbrainfuckへ誘導されるから
元々あったネタなんだなと思ったんだけどどうなんだろ。

55 :デフォルトの名無しさん:2009/01/10(土) 00:03:49 .net
>>51
j=s=[];をj=[];s=[];にしたら直った。
でもプロポーショナルフォントで表示されて残念なことになってたw

56 :デフォルトの名無しさん:2009/01/10(土) 00:36:09 .net
「brainfsck -brainfuck」でぐぐると7万件くらい引っかかるから
あっちではそこそこ知られてるネタなんだと思うけど
出所はわからなかった

57 :デフォルトの名無しさん:2009/01/10(土) 02:04:24 .net
>>50 >>55
IE6でも動きました!!やっと制限がなくなって嬉しいです!!
すぐ結果が見れて素敵です
あと必要なのはUNICODE対応くらいでしょうか

58 :デフォルトの名無しさん:2009/01/10(土) 07:15:46 .net

++[>++[>++>++<<-]<-]

を食わせてみたら本来 00 00 08 08 となるべきところ
なにもでなかった


59 :デフォルトの名無しさん:2009/01/10(土) 18:00:58 .net
>>+++++[-<++++++>]<+[-<++>]<.>+++[-<------>]<-.........>++++++[-<++++++++>]<
.>>+++++++++++[-<++>]<+[-<-->]<.+++++++++++++++.-----------------...........
.>+++[-<++++++>]<+.>+++++[-<++++++>]<+.>+++++++++++[-<--->]<.---------------
--.+++.-........+.---...........>+++++++++++[-<--->]<.>+++++++++++[-<+++>]<.
...+++.++++++++++++++++.>+++[-<------>]<-...>++++++[-<++++++++>]<.>>++++++++
+++[-<++>]<+[-<-->]<.+++++++++++++++.---------------......+++++++++++++++++.
>+++++[-<++++++>]<+.>+++++++++++[-<--->]<.---------------.+.++++++++++++++++
.>+++[-<------>]<-.............>++++++[-<++++++++>]<.>>+++++++++++[-<++>]<+[
-<-->]<.+++++++++++++++.---------------.....+++++++++++++++++.>+++++[-<+++++
+>]<+.>+++++++++++[-<--->]<.--------------.++++++++++++++++.>+++++++++++++[-
<---->]<.>+++++++++++[-<+++>]<.................>++++++[-<++++++++>]<.>>+++++
++++++[-<++>]<+[-<-->]<.+++++++++++++++.-----------------..>+++[-<++++++>]<+
.>+++++[-<++++++>]<+.>+++++++++++[-<--->]<.--------------.---....+++.+++++++
+++++++++.>+++[-<------>]<-..........>++++++[-<++++++++>]<.>>+++++++++++[-<+
+>]<+[-<-->]<.+++++++++++++++.---------------.....>+++++++[-<----->]<.>+++++
++[-<+++++>]<.+++++++++++++++++.>+++++[-<++++++>]<+.>+++++++++++[-<--->]<.--
------------.>++++++[-<------>]<.

http://lowreal.net/logs/2006/09/04/3


60 :デフォルトの名無しさん:2009/01/10(土) 18:11:22 .net
>++++[<++++++++>-] // 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 :デフォルトの名無しさん:2009/01/10(土) 18:18:46 .net
>>59
>+++++++++[-<++++++++++++>]<+.--------.+++++++++++
++++.>+++[-<------>]<-.>+++++++++++++[-<----->]<.>
+++++++++++++++++[-<++>]<.++++.>++++++++++[-<-----
->]<.


62 :デフォルトの名無しさん:2009/01/10(土) 18:24:30 .net
>++++[<++++++++>-]>++++++++[<++++++>-]<++.<.> +.<.> ++.<.> ++.<.> >++ [<--->-]
<..<.> .++.<.> --.>++ [<+++>-]<.<.> >++ [<--->-]<.>++[<++++>-]<.<.> >++[<--->-]
<-.+.<.> -.>+++[<++>-]<+.<.> >++ [<--->-]<.--.<.> ++.++++.<.> ---.---.<.> +++.
-.<.> +.+++.<.> --.--.<.> ++.++++.<.> ---.-----.<.> +++++.+.<.> .>++ [<--->-]
<.<.> >++ [<+++>-]<.----.<.> ++++.++.<.> -.-----.<.> +++++.+.<.> .--.

http://labs.cybozu.co.jp/blog/takesako/2006/06/bpencode.html


63 :デフォルトの名無しさん:2009/01/10(土) 19:00:44 .net
>++++[<++++++++>-]>+++++++[<++++++++>-]<+>+++++++++>>++++++++++[<++++++++++>-]
<--[>[-]<[->+>+<<]>>[-<<+>>]<-[>[-]<<[->>+>+<<<]>>>[-<<<+>>>]<+[>>[-]>[-]
<<[>+>+<<-]>>[<<+>>-]<>[-]+<[>-<[-]]>[-<<<<[->>+>>+<<<<]>>>>[-<<<<+>>>>]<<+>>]
<<-<-]> >[-]+<[[-]>-< ]>[-<>>[-]+<<<<[-]+>>>]<<<-]>>>> >[-]+<[[-]>-< ]
>[-<<<<<<<<.>>>[-]++++++[<<++++++++>>-]<<.>>++++++[<<-------->>-]
<<<<.>>>>>>>>>]<<<<<<->>[-]<<<[->>+>+<<<]>>>[-<<<+>>>]<>+<[[-]>-<<<->>]
>[-<<<+++++++++<->>>>]<<]


64 :デフォルトの名無しさん:2009/01/10(土) 23:43:54 .net
お、なんか賑わってるねぇ。
前DAT、前々DAT誰か持ってたら
保管庫でもつくっとくかな

65 :デフォルトの名無しさん:2009/01/10(土) 23:51:28 .net
これでいいのか
ttp://ranobe.com/up/src/up330615.zip

66 :デフォルトの名無しさん:2009/01/10(土) 23:56:34 .net
+[<++>-]

+[-<++>]
は意味的には同じですか?

67 :デフォルトの名無しさん:2009/01/11(日) 00:54:03 .net
>>65
ありがとう
思いのほか早くて驚いたw

68 :デフォルトの名無しさん:2009/01/11(日) 00:56:49 .net
受け取れたようなので消しといた。

69 :デフォルトの名無しさん:2009/01/11(日) 14:01:36 .net
>>66
一緒じゃね

70 :デフォルトの名無しさん:2009/01/14(水) 10:04:19 .net
ז

71 :デフォルトの名無しさん:2009/01/14(水) 13:24:37 .net
++++[>++++[>+++++>++++>+++++>+++++<<<<-]<-]>>-----.>+.>+++.>-.

72 :デフォルトの名無しさん:2009/01/14(水) 21:45:10 .net
2048コア位のBFCPUまだー?

73 :デフォルトの名無しさん:2009/01/14(水) 22:03:43 .net
.NET用のアセンブリにするコンパイラ書いてみた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8636.txt
世の中には既に同じようなものがあるみたいだけど気にしない

74 :デフォルトの名無しさん:2009/01/15(木) 15:22:25 .net
BFで書かれてるのかとワクワクしちゃったじゃないか…

75 :デフォルトの名無しさん:2009/01/21(水) 16:59:37 .net
置換ネタで、いいなぁって思うのは
ソース見ても一見、大した意味のない文章に見える所だと思う。
だからやたら出回ってる置換ネタの九割は意味なし。
その点長門は秀逸

76 :デフォルトの名無しさん:2009/01/21(水) 17:55:47 .net
http://natu.txt-nifty.com/natsutan/2008/03/brainfuck_d62c.html
http://blog.livedoor.jp/naoya_t/archives/cat_50030990.html


77 :デフォルトの名無しさん:2009/01/21(水) 19:47:05 .net
misaじゃね?

78 :デフォルトの名無しさん:2009/02/10(火) 15:00:45 .net
みさみさ?

79 :デフォルトの名無しさん:2009/02/15(日) 03:35:54 .net
ttp://thumb.vipper.org/vfile/vip1110508.jpg

80 :デフォルトの名無しさん:2009/02/15(日) 11:41:04 .net
抜いた

81 :デフォルトの名無しさん:2009/02/15(日) 13:34:23 .net
魂が?w

82 :デフォルトの名無しさん:2009/02/15(日) 14:31:34 .net
>>79
++++++[>++++++<-]>[>+>+<<-]>--->>++++
+++++[<+++++++++>-]<--------------.++
+++++++++.---.+++++.---------------.++
++++++++++++.--.++++.----------------.
++++++++++++++++<.>

83 :デフォルトの名無しさん:2009/03/15(日) 02:48:14 .net
sage

84 :デフォルトの名無しさん:2009/03/15(日) 14:53:08 .net
age

85 :デフォルトの名無しさん:2009/03/21(土) 19:00:51 .net
sagi

86 :デフォルトの名無しさん:2009/03/23(月) 17:43:14 .net
いい加減飽きただろうがどうしても置換ネタ

> → 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 :デフォルトの名無しさん:2009/03/23(月) 20:55:06 .net
普通に「読めない文字はスルーする」という従来通りの挙動でいいのでは

88 :デフォルトの名無しさん:2009/03/23(月) 22:18:12 .net
無駄に英文が長くなる  却下

89 :デフォルトの名無しさん:2009/03/23(月) 22:19:31 .net
88は86に対するレスね >>87でいいと思う

90 :デフォルトの名無しさん:2009/03/23(月) 23:14:10 .net
なんとか意味の通じる英文を・・・と考えての仕様だろうが
残念ながら君には50音版を作ってもらう

91 :デフォルトの名無しさん:2009/03/24(火) 00:31:18 .net

+ → E
- → A
> → T
< → I
[ → S
] → N
. → R
, → U

92 :デフォルトの名無しさん:2009/03/24(火) 18:17:48 .net
>>91
-<[<>+.,

93 :デフォルトの名無しさん:2009/03/24(火) 19:15:54 .net
>>92
[<+][,.,

94 :デフォルトの名無しさん:2009/03/26(木) 21:34:05 .net
+ → いろはにほへと
- → ちりぬるを
> → わかよたれそ
< → つねならむ
[ → うゐのおくやま
] → けふこえて
. → あさきゆめみし
, → ゑひもせす
濁音・半濁音・小文字は清音と一緒
「ん」はスルー

95 :デフォルトの名無しさん:2009/03/27(金) 04:37:11 .net
ルール考えるのはいいけど、
それで自分でプログラム書いてみろってばさ。


96 :デフォルトの名無しさん:2009/03/28(土) 15:17:10 .net
Urban Muellerさんに言ってるんだな

97 :デフォルトの名無しさん:2009/03/30(月) 23:42:15 .net
もう痴漢ネタは秋田

98 :デフォルトの名無しさん:2009/04/10(金) 11:23:47 .net
ほしゅ

99 :デフォルトの名無しさん:2009/04/16(木) 22:58:24 .net
ほしゅう

100 :デフォルトの名無しさん:2009/04/25(土) 15:59:46 .net
ごしゅう

101 :デフォルトの名無しさん:2009/05/08(金) 00:39:19 .net


102 :デフォルトの名無しさん:2009/05/15(金) 21:03:39 .net
+

103 :デフォルトの名無しさん:2009/05/17(日) 20:47:00 .net
[]

104 :デフォルトの名無しさん:2009/05/17(日) 23:05:24 .net
> > > > > >

105 :デフォルトの名無しさん:2009/06/04(木) 21:57:56 .net
無ネタ

106 :デフォルトの名無しさん:2009/06/13(土) 16:24:34 .net
+++[>+++<-]>[>+>+<<-]>->>++++++++++[<++++++++++>-]<------------.++++++<.>.<.>--.++<.>

107 :デフォルトの名無しさん:2009/06/20(土) 16:17:42 .net
]

108 :デフォルトの名無しさん:2009/06/22(月) 01:30:36 .net


109 :デフォルトの名無しさん:2009/08/02(日) 21:49:41 .net

              _.。ャぁて丕刀フ7ゎ。._
           ,.ィ炙ヲi≠┴⇒弍j込ス>。
.        ,ィ升ヲナ'´           `゙'<弖心、
.        ;夕フア´                \ホi心.
       んfiУ                ▽ij∧
       从j'Y                   ∨iハ
.       斤W                      kい
     |友カ                    }ソ川
.       い叭                   仄ガ
.     Wi从                  从ノリ
.      ∀t△                 ∧fリ/
       ゙マじへ、             /リiУ
        \夊id、_             ,.イ!刋/
         `マ才i「≧ェ。。.。。っ夭テ少'゚
           `゚'' ミ芝玉竺壬云=‐'´
                    ̄ ̄


110 :デフォルトの名無しさん:2009/08/03(月) 22:46:35 .net
一応BFとして動くな

111 :デフォルトの名無しさん:2009/08/03(月) 23:31:46 .net
[と]の個数があってればなんでも一応動くだろ

112 :デフォルトの名無しさん:2009/08/03(月) 23:52:00 .net
個数が合っててもネスト構造がおかしかったら処理系によっては動かないだろ

113 :デフォルトの名無しさん:2009/08/04(火) 00:49:19 .net
あー言い間違えた。そうそうそういうことが言いたかった

114 :デフォルトの名無しさん:2009/08/04(火) 16:49:05 .net
というかム板じゃない他スレにも貼ってあったから無視したが
これはコードだったのか

115 :デフォルトの名無しさん:2009/08/04(火) 17:49:22 .net
BFコードとして解釈できないレスの方が珍しい

116 :デフォルトの名無しさん:2009/08/04(火) 19:41:55 .net
処理系によっては動くおかしなネスト構造ってどういうやつ?

117 :デフォルトの名無しさん:2009/08/04(火) 21:46:45 .net
[ ] ] [ [ ]
とかじゃね

処理系によっては過剰の ] をプログラムの終了と解釈するとかもあるので
そのような処理系の場合は正常に終了する

118 :デフォルトの名無しさん:2009/08/04(火) 21:47:47 .net
ん、ちょっと言い間違えた
終了するかはともかく、正常に実行される

119 :デフォルトの名無しさん:2009/08/18(火) 21:46:42 .net
BrainFuckでライブラリを書けば、どんな言語、どんな環境にも極めて簡単にポーティング可能!
BrainFuckライブラリを充実させることこそ我々の急務ではないだろうか!


120 :デフォルトの名無しさん:2009/08/18(火) 23:36:08 .net
再入可能どころか再配置可能も怪しいぞ

121 :デフォルトの名無しさん:2009/08/20(木) 06:23:46 .net
>>120
BrainFuckはチューリング完全だから、気合でなんとかすればよろし。


122 :デフォルトの名無しさん:2009/08/25(火) 18:52:06 .net
>>120
相対位置でできれば良いんじゃない?

123 :デフォルトの名無しさん:2009/08/25(火) 23:08:59 .net
まずは再入、再配置のライブラリを書いてみようか?



124 :デフォルトの名無しさん:2009/08/26(水) 02:46:50 .net
>>123
そうするとメタプログラミング
みたいになるんじゃないか?

125 :デフォルトの名無しさん:2009/08/26(水) 11:09:01 .net
中間言語→BFにコンパイルするコンパイラを作ればいいんじゃね
逆ポーランド記法な言語からのコンパイラならなんとかできるかな

126 :デフォルトの名無しさん:2009/08/26(水) 11:30:45 .net
>>125
だったらBFのソースを
全部その言語で書かなきゃいけなくなるんじゃ?

127 :デフォルトの名無しさん:2009/08/26(水) 22:42:52 .net
どうせ有限なんだから時間さえあればいける

128 :デフォルトの名無しさん:2009/08/26(水) 23:31:10 .net
ついでにBrainFuckを逆アセンブル?してCソースにするコンパイラもよろしく。


129 :デフォルトの名無しさん:2009/08/26(水) 23:43:45 .net
それは最適化しなくていいなら簡単

130 :デフォルトの名無しさん:2009/08/27(木) 00:02:29 .net
もちろん可能な限り元のコードの意味を推測して、それらしいコードを復元してほしい。

131 :デフォルトの名無しさん:2009/08/27(木) 00:22:41 .net
今JSでそういうの書いてる

132 :デフォルトの名無しさん:2009/08/27(木) 17:47:54 .net
期待

133 :デフォルトの名無しさん:2009/08/27(木) 19:07:31 .net
がんばってくれ

134 :デフォルトの名無しさん:2009/08/27(木) 23:43:54 .net
前スレより
http://www.clifford.at/bfcpu/bfcomp.html
A compiler for a c-like high-level language which generates brainf*ck code

135 :デフォルトの名無しさん:2009/08/29(土) 21:39:59 .net
まだか?

136 :名無しさん@そうだ選挙に行こう:2009/08/30(日) 08:20:26 .net
>>128
guy shirts

137 :デフォルトの名無しさん:2009/08/31(月) 23:10:26 .net
>134
linuxか・・・

138 :デフォルトの名無しさん:2009/09/01(火) 23:56:37 .net
BrainFuckでビジービーバーゲームをやるのも面白いかもしれない。
http://ja.wikipedia.org/wiki/%E3%83%93%E3%82%B8%E3%83%BC%E3%83%93%E3%83%BC%E3%83%90%E3%83%BC

ここでやるのはスレチかな?

139 :デフォルトの名無しさん:2009/09/02(水) 07:09:25 .net
>>138
ビジービーバーゲームって
http://www.infonet.co.jp/ueyama/ip/history/turing.html
でおk?

140 :デフォルトの名無しさん:2009/09/02(水) 07:31:28 .net
>>139
それはチューリングマシンの説明で、ビジービーバーゲームとは違う。ビジービーバーの要点は
>停止するまでにテープに 1 を最も多く出力するような n-状態チューリングマシンを見つけ出そう、というゲーム
だよ。




141 :デフォルトの名無しさん:2009/09/02(水) 07:43:26 .net
>>140
だったらチューリングマシンで
1が多く出力される遷移関数を考えるってこと?

142 :デフォルトの名無しさん:2009/09/02(水) 07:56:56 .net
ビジービーバーゲームの説明はそれでおk。
普通はチューリングマシンでやるところをBrainFuckでやってみようと。


143 :デフォルトの名無しさん:2009/09/02(水) 08:03:58 .net
まず遷移関数をどうやって
BFプログラムに変換するかが問題だな

144 :デフォルトの名無しさん:2009/09/02(水) 17:55:03 .net
状態数は、BFでいえばコードのバイト数と似たようなもんだよ。
だから、

同じバイト数のBFコードで、
より大きな10進数を標準出力に生成する

こんな競技になる。

145 :デフォルトの名無しさん:2009/09/02(水) 18:01:24 .net
+[.]

じゃあかんの

146 :デフォルトの名無しさん:2009/09/02(水) 18:24:18 .net
>>145
それだと無限ループになって
つまらないだろ

147 :デフォルトの名無しさん:2009/09/02(水) 19:06:13 .net
つまんないけど最強だろ

148 :デフォルトの名無しさん:2009/09/02(水) 19:10:37 .net
ビジービーバーゲームでのプログラムは停止しなきゃいけないんだ。
じゃなきゃ比較なんて出来ないからな。

149 :デフォルトの名無しさん:2009/09/02(水) 20:00:00 .net
じゃこれ
[>+.]
ポインタがオーバーフローすれば止まる

150 :デフォルトの名無しさん:2009/09/02(水) 20:03:58 .net
>>149
でも、処理系によっては
ループするぞ

151 :デフォルトの名無しさん:2009/09/02(水) 20:52:53 .net
>>149
ビジービーバーを考えるときは、
テープの長さに限界は考えないよ。

152 :デフォルトの名無しさん:2009/09/02(水) 21:58:45 .net
後出しルールうざい

153 :デフォルトの名無しさん:2009/09/02(水) 22:41:24 .net
後出しルールって言うか>>138のリンク先に全部書いてあるのに読んでないのが悪いんだと思うんだが

154 :デフォルトの名無しさん:2009/09/02(水) 22:51:29 .net
てか、一般的なBFの話をするなら無限長のテープじゃないとダメだろ
実装ではしょうがないかもしれないけどさ

155 :デフォルトの名無しさん:2009/09/02(水) 22:56:09 .net
テープの長さが有限だとチューリング完全にならない

156 :デフォルトの名無しさん:2009/09/02(水) 23:28:56 .net
そうそう、実際の処理系じゃなくて理想の処理系で動かさないと。


157 :デフォルトの名無しさん:2009/09/02(水) 23:37:01 .net
なあ、詳しい人教えてくれ。
ある100状態のチューリングマシンがあって、
そのチューリングマシンがΣ(100)ステップ後に停止したとする。
このチューリングマシンがΣ(100)ステップ後に停止することを証明しようとしたら、
その証明は少なくともΣ(100)文字程度のオーダーの長さになる。
これは正しい?



158 :デフォルトの名無しさん:2009/09/03(木) 03:57:09 .net
>>157
一番ゆるい条件を与えるならそうなるんじゃね。
オーダーは定数倍を無視するから。
遷移を全部書き出して示せばいいだけだからね。

159 :デフォルトの名無しさん:2009/09/04(金) 22:47:53 .net


160 :デフォルトの名無しさん:2009/09/06(日) 18:28:26 .net
ho

161 :デフォルトの名無しさん:2009/09/08(火) 00:22:48 .net
h

162 :デフォルトの名無しさん:2009/09/10(木) 07:01:39 .net
ho

163 :デフォルトの名無しさん:2009/09/10(木) 15:59:52 .net
++++++[>++++++<-]>[>+>+<<-]>--->>++++
+++++[<+++++++++>-]<--------------.++
+++++++++.---.+++++.---------------.++
++++++++++++.--.++++.----------------.
++++++++++++++++<.>

164 :デフォルトの名無しさん:2009/09/10(木) 19:50:09 .net
>>163
グロ注意

165 :デフォルトの名無しさん:2009/09/15(火) 22:01:45 .net


166 :デフォルトの名無しさん:2009/09/18(金) 23:51:37 .net
+[ほ+]

167 :デフォルトの名無しさん:2009/09/21(月) 19:44:06 .net
ho

168 :デフォルトの名無しさん:2009/09/22(火) 07:00:44 .net
俺的にBrainFuckの文法に最小限の拡張を加えて最大限パワーアップさせるには
どうしたらいいか考えてみた結果次のようになった。
まず、メモリはテープではなく無限の高さを持つ2分木のようなものを想定。

L ポインタを2分木メモリの左の子へ移動
R ポインタを2分木メモリの右の子へ移動
U ポインタを2分木メモリの親へ移動
+ BFと同様
- BFと同様
. BFと同様
, BFと同様
[ BFと同様
] BFと同様

まあ、大体BFでlispのconsセルが使えるようなイメージ。



169 :デフォルトの名無しさん:2009/09/22(火) 14:13:50 .net
そんなもん普通のBFの範囲でできるがな

170 :デフォルトの名無しさん:2009/09/22(火) 14:17:53 .net
BFはチューリング完全だから
変わらないぞ

171 :デフォルトの名無しさん:2009/09/22(火) 16:31:49 .net
この拡張でコードが劇的に短くなる例が欲しいな

172 :デフォルトの名無しさん:2009/09/22(火) 17:20:27 .net
んで、最終的にアセンブリやCになる・・・と
拡張=BFの死なんだよな

過去ログの通り、拡張行為すればするほどBFの簡潔さが失われていき
別にBFを使う理由がなくなる

173 :デフォルトの名無しさん:2009/09/22(火) 18:50:58 .net
うだうだ言ってないでインタプリタとコンパイラかけ
500バイト以内で書けたら合格にしてやる

174 :デフォルトの名無しさん:2009/09/22(火) 20:51:37 .net
既出じゃね?

175 :168:2009/09/22(火) 22:56:17 .net
んが。既出なのか。ま、既出でも全然不思議ではないけど。
一応このスレの中はチェックしたつもりだったけど
前スレはチェックしてないんだよね。

>>168のプログラム言語をBTBF(BinaryTree BrainFuck)と呼ぶとして、
BTBFのコードをBFのコードに変換するトランスレータを実装しろってのは
学生向け演習問題として良問じゃね?


176 :デフォルトの名無しさん:2009/09/22(火) 22:59:16 .net
>175
まだ出てなかったぞ

177 :デフォルトの名無しさん:2009/09/22(火) 23:06:44 .net
コード短くする役に立つとすればこんなのかなぁ
まあいらないけど

x 直前のコマンドを*p回繰り返す
* p=*p
& *p=p
c 最も近い前方の[にジャンプ
b 最も近い後方の]にジャンプ

178 :168:2009/09/22(火) 23:42:17 .net
>>172
俺は拡張=BFの死とは思ってないんだよね。
シンプルさがBFの価値なのは同意だけど、
もっともシンプルなチューリング完全言語BFと
Cやlispといった高級言語の生産性の溝がどれだけあるかってのを
把握できるのもBFの存在価値だと思う。
だから「BF+α=lisp」のαの部分がどれだけあるのか、俺は興味があるです。

#どっちもチューリング完全だから等価って乱暴な議論はなしね。




179 :デフォルトの名無しさん:2009/09/23(水) 00:05:02 .net
純lispはBFと同じくらいシンプルだけど考え方が全然違うから
そんな+α的な物はない

180 :168:2009/09/23(水) 00:08:29 .net
ないわけはない。
チューリング完全的に考えて。
極端な話、理屈の上ではBFでlispインタプリタは書けることになっている。
それがどれくらい大変か?と言う問題はある。
lispでBFインタプリタを書くのは簡単だけど、
BFでlispインタプリタを書くのはきつそう。

181 :デフォルトの名無しさん:2009/09/23(水) 00:17:40 .net
lispからbfに変換するプログラムは作れるんじゃないか?

182 :デフォルトの名無しさん:2009/09/23(水) 03:42:27 .net
LISPでBFのインタプリタが簡単ねえ
真面目にシンボルをASCIIのチャーチ数表現で取り扱えば同じかそれ以上に大変だと思うけどな

183 :デフォルトの名無しさん:2009/09/23(水) 08:18:23 .net
pure LISPだとBFよりもプログラム書くの難易度高いだろJK

184 :168:2009/09/23(水) 08:33:05 .net
よくみたら純lispって書いてあるな。
てっきりclispのつもりで話してた。

185 :デフォルトの名無しさん:2009/09/23(水) 09:12:38 .net
>>168
便利かどうか試しに実装してみようと思ったら疑問がいくつか。
・2分木メモリは値を持つの?持たないとしたらポインタがconsを指しているとき
 入出力命令は何をすべき?
・+-で指すリニアなメモリとLRUで指す2分木メモリの空間はまったく別のもの?
 ていうか+-廃止すべき?

自分的にはノーアイデアなんだけど、BFくらい最小のLispができそうですごく面白そうだとは思う。

186 :168:2009/09/23(水) 10:30:02 .net
メモリは値を持ちます。
後は通常のBFと同じ。

187 :デフォルトの名無しさん:2009/09/23(水) 10:47:01 .net
まずはhello worldから始めろ
プログラミング言語として使えないなら机上の空論

188 :デフォルトの名無しさん:2009/09/23(水) 10:49:15 .net
この板ではチューリング完全という言葉がたまに登場するが、
もちろん、このスレで使ってる人たちも、意味とか前提とか
分かって使ってるよね?

189 :185:2009/09/23(水) 12:19:47 .net
あ、<>と+-を勘違いしてた。<>の代わりにLRUということか。


190 :デフォルトの名無しさん:2009/09/23(水) 16:29:57 .net
>>188
説明して

191 :デフォルトの名無しさん:2009/09/23(水) 16:43:51 .net
入出力が便利になれば使い道はあると思うとかは考える
でも、それじゃ駄目なんだよな
BFとは別物として考えなきゃいけなくなる

192 :デフォルトの名無しさん:2009/09/23(水) 16:53:57 .net
システムコールは欲しいな

193 :デフォルトの名無しさん:2009/09/23(水) 19:48:01 .net
BFってpure LISPほど純粋じゃないよな。
入出力命令なんてあるし。
ある意味入出力命令がシステムコールってことになるんじゃね。

194 :デフォルトの名無しさん:2009/09/23(水) 19:51:53 .net
>>193
それはbfが関数型言語じゃないから
純粋とか言う問題じゃないんじゃないか

195 :デフォルトの名無しさん:2009/09/23(水) 21:26:57 .net
BFのシンプルな体系を壊さずに拡張する方法としては
負の方向のメモリマッピングにコンソール(.,)以外の
I/Oを割り当てることかな
[-1]に数値をストアしておいて
[-2]の位置で+-すると[-1]の回数beepとか
[-3][-4]に数値をストアしておいて
[-5]の位置で+-すると[-3][-4]の座標の白黒が反転するとか


196 :デフォルトの名無しさん:2009/09/24(木) 01:22:24 .net
入出力命令をin,outにすればいい
>+++++++++[-<++++++++++>]<++++++, //in 60h


197 :185:2009/09/24(木) 02:13:09 .net
>>168 の提案した奴を作ってみたけど、面白い使い方がなかなか見つからないなあ。
実際のリスト構造はともかくとして、いろいろ遊んでみると、メモリ空間がL-UとR-Uの
2次元になった、という印象。可能性はすごく感じるので、なんとかしたいのだが。

198 :168:2009/09/24(木) 05:53:17 .net
消費メモリが定数なアルゴリズムだとBTBFの有り難味はないかもね。
実行中にバンバンnewするようなプログラムや複数の可変長配列を使うアルゴリズムが
いくらか書きやすくなるんじゃないかとは思ってる。
あと、関数コールの機構もBFで実装するのはきつくても
BTBFならもしかしたらBFよりずっと楽にいけんじゃね?


199 :デフォルトの名無しさん:2009/09/24(木) 21:05:22 .net
実装は既存のBF処理系に
L: p*=2;
R: p=p*2+1;
U: p/=2
を付け加えて、ptrの初期値を1に修正するだけだな

200 :デフォルトの名無しさん:2009/09/27(日) 23:03:26 .net
ところで、2分木を綺麗にグラフィカルに表示するライブラリって何かいいのある?


201 :デフォルトの名無しさん:2009/09/27(日) 23:20:15 .net
BFスレでその話題を振るココロは?

202 :デフォルトの名無しさん:2009/09/27(日) 23:43:25 .net
>>168をもうちょっと見やすくしたくて。




203 :デフォルトの名無しさん:2009/09/27(日) 23:56:13 .net
そもそもBFで書かれたライブラリなんて存在するのか?

204 :デフォルトの名無しさん:2009/09/27(日) 23:57:21 .net
まずbfはライブラリを作ること自体困難だろ

205 :デフォルトの名無しさん:2009/09/28(月) 01:51:09 .net
まずは整数の四則演算ライブラリからだな
ライブラリというかコードスニペットレベル?

206 :デフォルトの名無しさん:2009/09/28(月) 07:02:38 .net
前スレであったみたいに
どこのメモリに数値を入れて
どこのメモリに答えが返ってくる
って感じにすると良いんじゃない?

207 :デフォルトの名無しさん:2009/09/29(火) 02:17:13 .net
call

208 :デフォルトの名無しさん:2009/09/29(火) 02:31:22 .net
任意のシステムコールさえ呼べれば何とでもなる
敢えて関数呼び出し機構を命令に加える必要はない

209 :デフォルトの名無しさん:2009/09/29(火) 03:23:00 .net
文字列やポインタを渡さなくちゃならないシステムコールはどうするんだ

210 :デフォルトの名無しさん:2009/09/29(火) 09:22:16 .net
システムコールとシリアル通信すればいいよ

211 :デフォルトの名無しさん:2009/09/29(火) 10:00:05 .net
VRAMの上で走るBFを、
標準入出力から他のBFプロセスで制御すればいいんじゃね…?

212 :デフォルトの名無しさん:2009/09/29(火) 12:15:04 .net
それをBFの機能と言えるかが問題だな
バイナリデータですらシステムコールが可能と言えてしまうぞ

213 :デフォルトの名無しさん:2009/09/29(火) 18:41:29 .net
BFのデータセグメントをVRAMに置けっ場解決するのか?
ダブるバッファリングは無理か


214 :デフォルトの名無しさん:2009/09/29(火) 19:54:18 .net
もうbf用のOS作ったら?

215 :デフォルトの名無しさん:2009/09/29(火) 20:22:16 .net
OSにBF向けのインターフェースがあればいいわけだな
0番地に+すると1番地の番号のシステムコールを2,3,4,...番地の値を引数にして呼び出すみたいな

216 :デフォルトの名無しさん:2009/09/29(火) 20:26:54 .net
そうすればハードディスクとかメモリとかにアクセスできるな
解析とかも簡単になるんじゃない?

217 :デフォルトの名無しさん:2009/09/29(火) 22:14:03 .net
まずはリンカとローダだろ。

218 :デフォルトの名無しさん:2009/09/30(水) 02:09:42 .net
コード空間とメモリ空間が分離されてるからリンカやロダは不要

219 :デフォルトの名無しさん:2009/11/11(水) 22:18:35 .net
何で

220 :デフォルトの名無しさん:2009/11/19(木) 23:41:50 .net
brainfuckって英語でどういう意味ですか?

221 :デフォルトの名無しさん:2009/11/20(金) 00:06:17 .net
のーみそこねこね

222 :デフォルトの名無しさん:2009/12/03(木) 18:18:34 .net
       ___
     /      \
    /   ⌒   ⌒\
  /     ,(⌒) (⌒)、\  ひとりSMセット買ったお
  |     /// (__人__)/// |     今夜は楽しむおww
  \      ` ヽ_ノ   /   
    ヽ    , __ , イ
    /       |_"____
   |   l..   /l SMグッズ l
   ヽ  丶-.,/  |_________|
   /`ー、_ノ /      /
       ::                .|ミ|
        ::               .|ミ|           ::::::::
         :::::     ____ |ミ|          ::::
           :: ,. -'"´      `¨ー 、       ::
   ::        /   ,,.-'"      ヽ  ヽ、    ::
   ::     ,,.-'"_  r‐'"     ,,.-'"`     ヽ、 ::
   ::   /    ヾ (    _,,.-='==-、ヽ         ヽ、
   ::   i へ___ ヽゝ=-'"/    _,,>         ヽ 
   ::   ./ /  > ='''"  ̄ ̄ ̄               ヽ 
  ::   / .<_ ノ''"       ヽ               i
  ::   /    i   人_   ノ              .l
  ::  ,'     ' ,_,,ノエエエェェ了               /
    i       じエ='='='" ',              / ::
    ',       (___,,..----U             / ::
     ヽ、         __,,.. --------------i-'"  ::
      ヽ、_   __ -_'"--''"ニニニニニニニニヽ   ::
         `¨i三彡--''"´              ヽ  ::  
          /                      ヽ ::              ┼ヽ  -|r‐、. レ |
         /                     ヽ::            d⌒) ./| _ノ  __ノ


223 :デフォルトの名無しさん:2009/12/03(木) 20:02:48 .net
あるある

224 :デフォルトの名無しさん:2009/12/04(金) 05:07:08 .net
perlでBrainfuckの処理系書いてみたんだが、
Brainfuckのプログラム書くより簡単でなんだか複雑な気分だ…

225 :デフォルトの名無しさん:2009/12/04(金) 22:07:52 .net
次はBrainfuckでperlの…

226 :デフォルトの名無しさん:2009/12/04(金) 23:22:03 .net
Brainfuckで日本語が扱えるようにはならないものか

227 :デフォルトの名無しさん:2009/12/04(金) 23:35:38 .net
そーすに記述したいってんでもあるまいし、扱えないことはないだろう?

228 :デフォルトの名無しさん:2009/12/05(土) 00:08:59 .net
ShiftJISなりUTF-8なりのバイト列を吐けばいいだけだよな

229 :デフォルトの名無しさん:2009/12/05(土) 09:33:31 .net
例えば、
: で、ポインタの指している値とその次のポインタの値を2バイト文字として出力する。
; で、2バイト文字を入力して、ポインタの指している値とその次のポインタの値に代入する。

ってのはどうよ?

230 :デフォルトの名無しさん:2009/12/05(土) 11:01:11 .net
.>.<と,>,<で十分じゃないか

231 :229:2009/12/05(土) 16:21:32 .net
とりあえず実行してみた。

>++++++++++[<+++++++++++++>-]
+++[>+++++<-]>[<++++++++++++>-]<--->
>++++++++++[<+++++++++++++>-]
>++++[>++++<-]>[<+++[<+++++>-]>-]<<+>
>++++++++++[<+++++++++++++>-]
>++++++++++++++[<++++++++++++++>-]<+++++>
>++++++++++[<+++++++++++++>-]
>++++++++++++++[<++++++++++++++>-]<----->
>++++++++++[<+++++++++++++>-]
>++++++++++++++[<++++++++++++++>-]<+++++++++>
>++++++++++++[<++++++++++++>-]
>+++++++++++++[<+++++++++++++>-]<------->
>++++++++++++[<+++++++++++>-]<++++++>
>++++++++[<++++++++>-]<+++++>
>++++++++++[<+++++++++++++>-]<->
>++++++++[<+++++++++>-]<+
<<<<<<<<<<<<<<<
:>>:>>:>>:>>:>>:>>:>>:>>:


メモリに"こんにちは世界!"を表わす
82,B1,82,F1,81,C9,81,BF,82,CD,90,A2,8A,45,81,49
がメモリに積まれて、最後の方の":"命令で、Shift-JIS形式の文字が表示される。

作ってから思ったけど、これって既出?

232 :デフォルトの名無しさん:2009/12/05(土) 17:03:48 .net
うん。

233 :デフォルトの名無しさん:2009/12/05(土) 17:46:50 .net
>>229
Shift-JISを使うために新命令は必要ないってことわかってる?
入出力は1byteずつでも、解釈はまとめてやればいい。
実際そうしてShift-JISを扱えるBF処理系も存在する。

234 :デフォルトの名無しさん:2009/12/05(土) 22:50:53 .net
馬鹿だなぁ
:>
が顔に見えるってギャグだろどうせ

235 :デフォルトの名無しさん:2009/12/06(日) 10:05:30 .net
海外風な顔文字か。
[:<]<

236 :デフォルトの名無しさん:2009/12/06(日) 23:24:24 .net
BFで : を .>.< に置き換えるBFプロプロセッサ書けばいいよ

237 :デフォルトの名無しさん:2009/12/08(火) 12:47:34 .net
まだBFなんてやってんのかよだっせー
時代は純粋関数型言語Unlambdaだぜ

238 :デフォルトの名無しさん:2009/12/09(水) 03:11:58 .net
>>237
そんなこと言うならBrainfuckユーザが容易にUnlambdaへ移行できるように
Brainfuck-to-UnlambdaトランスレータをUnlambdaで書いてくれw

239 :デフォルトの名無しさん:2009/12/09(水) 18:02:48 .net
bfユーザが理解できるようにトランスレータはbfで書こうぜ

240 :デフォルトの名無しさん:2009/12/22(火) 13:47:48 .net
#defineしまくればCでも書けるかな

241 :デフォルトの名無しさん:2010/01/02(土) 17:42:21 .net
esotope-bfcって凄いな
自分で作る気が失せる出来

242 :デフォルトの名無しさん:2010/01/02(土) 17:58:44 .net
>>241
見てきた
なんじゃあのオプティマイズ


243 :デフォルトの名無しさん:2010/01/03(日) 00:13:20 .net
まだまだだな
例示のプログラムのmやpはいらん

244 :デフォルトの名無しさん:2010/01/03(日) 08:07:28 .net
そのへんは削除するようにする(した)って書いてるよ

245 :デフォルトの名無しさん:2010/01/09(土) 00:17:46 .net
#include <stdio.h>

int main(int argc, char *argv[])
{
int c;

while ((c=getchar()) != EOF) {

while (c) {
putchar('+');
c--;
}
puts(".>");
}
}

246 :デフォルトの名無しさん:2010/01/09(土) 02:25:08 .net
俺にもHello Worldが作れた!

247 :245:2010/01/09(土) 19:43:17 .net
修正
#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;
}
}

248 :デフォルトの名無しさん:2010/01/10(日) 04:01:44 .net
最適化されたBFのソースを吐くなら、まだ修正する意味もあるかもしれないな。

249 :デフォルトの名無しさん:2010/01/15(金) 16:34:45 .net
最小ブレインファック問題の計算複雑性ってどの程度?

250 :デフォルトの名無しさん:2010/01/16(土) 09:18:43 .net
http://d.hatena.ne.jp/KeisukeNakano/20070626/1182879045

凄いんだが、何を行ってるのか分からない( ´∀`)ハハハ

251 :デフォルトの名無しさん:2010/01/16(土) 17:09:01 .net
>>249
直感的には、NP完全

252 :デフォルトの名無しさん:2010/01/16(土) 20:19:33 .net
>>249
計算不可能な問題だと思う


253 :デフォルトの名無しさん:2010/01/17(日) 12:19:05 .net
>>252
実質不可能って意味ではそうかもしれんが。
現実的でない時間をかけてもいいのなら、短いものから順にブルートフォースするといつかはたどり着くわけだから計算は可能。

254 :253:2010/01/17(日) 12:23:29 .net
いや、計算不可能かもしれない。ごめん。

無限ループかと思えるくらいに長い時間をかけて、最小BFとなるパターンと、単なる無限ループを区別するには
停止可能性の判定が必要になってくる。

255 :デフォルトの名無しさん:2010/01/17(日) 19:49:19 .net
プログラムの等価性判定って計算不可能だよね?
だとすれば、最小BFが計算できればその最小BF同士の比較によって等価性判定ができちゃうので計算不可能だと思う。

256 :245:2010/01/20(水) 22:10:00 .net
short bf_opt1(char *bfcode, char *optbfcode)
{
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;
}

257 :デフォルトの名無しさん:2010/02/21(日) 14:34:22 .net


258 :デフォルトの名無しさん:2010/02/21(日) 18:32:02 .net
スーパーpre記法のシンタックス・ハイライトが Brainfuck, Clojureに対応しました - はてなダイアリー日記
http://d.hatena.ne.jp/hatenadiary/20100219/1266571864

259 :デフォルトの名無しさん:2010/02/22(月) 17:35:51 .net
何やってんだw

260 :デフォルトの名無しさん:2010/02/27(土) 15:51:14 .net
bfがインタプリタ作るのが簡単な言語とはよく言われていたが、
シンタックスハイライト作るのも簡単ってのは斜め上だなぁ。気づかなかった。

261 :デフォルトの名無しさん:2010/03/03(水) 16:39:55 .net
プログラマーが仕事をサボっている兆候一覧

「Dvorakでもかなり早く打てるようになってきたぞ」
「念のためうちのサーバーでもGopherをサポートできるようにしときました」
「XHTML、HTML、さらにHAIKUにも準拠しています」
「brainfuckのシンタックスハイライトに対応しました」 ← new!

262 :デフォルトの名無しさん:2010/04/10(土) 11:57:14 .net
+[+] //まだまだ終わらせないコード

263 :デフォルトの名無しさん:2010/04/14(水) 01:57:52 .net
そのコードいずれオーバーフローして止まるぞ

264 :デフォルトの名無しさん:2010/04/14(水) 02:03:54 .net
+[-+]

265 :デフォルトの名無しさん:2010/04/14(水) 09:13:58 .net
ニコニコだけど、BFのインタプリタを作ってる動画
http://www.nicovideo.jp/watch/sm10384056


266 :デフォルトの名無しさん:2010/04/14(水) 16:52:59 .net
>>265


267 :デフォルトの名無しさん:2010/04/14(水) 17:08:11 .net
今日じゃねえかwww

268 :デフォルトの名無しさん:2010/05/13(木) 00:26:54 .net
一ヶ月前だ

269 :デフォルトの名無しさん:2010/05/13(木) 16:03:27 .net
今となっては昔のことだが

270 :デフォルトの名無しさん:2010/05/19(水) 23:22:02 .net
Brainfuckというものがあったそうな

271 :デフォルトの名無しさん:2010/05/20(木) 00:20:07 .net
湯水のごとく記号を使い、小さなプログラムを組んではスレに納めていたそうな

272 :デフォルトの名無しさん:2010/05/24(月) 15:35:19 .net
ttp://twitter.com/YewShmz/status/14212364028

273 :デフォルトの名無しさん:2010/05/29(土) 04:23:28 .net
2日前からBrainfuckプログラミング初めた
ようやくHelloWorldできた
>>>++++++++++[<+<<+>>>-]<[<++++>>++++++>++++++++++<<-]+++++
+++++>>[<<+>>>>+<<-]++++[>+++++<-]>>[<+<+>>-]>+++++[<++++++
+>-]<.<<<<-----.+++++.>>-.<<--.>>>---.<+.+.>>---.<<<.>>--.+
.<-.+++++.<<+++.<++++++.>>>-.<++.<<<.>>>>+.<<-.>>>.>.<<<<-.
>>--------.<<----.+++++.<------.+.<.>>>>>+++++++.<<<<<.>>>>
>>....<<<<++.++.---------.+++++.>>>-------.<+++++.<<<-.----
--.>>>++.---.<<--..+++.>>>>.<+++.<<<.+++.------.>>-.>>+.-<<
--------.<<++.<.+++++++.>>---.<<<.>>>>>>....<<<<++++.>>++++
+++++.>---.+.<<<.----.>>>>.<<<<<+++++++.>>.<<<.>>>>>++++++++.

274 :デフォルトの名無しさん:2010/05/29(土) 07:48:52 .net
うわぁ・・・
いまどき文字列出力くらいは拡張命令でやるのが常識だぞ
いくらなんでも非効率的に過ぎる

#!/bin/bf
printf("HelloWorld\n")

275 :デフォルトの名無しさん:2010/05/29(土) 11:43:29 .net
>>274
BFなんて実用目的に使うものじゃなくて、パズル感覚で遊ぶものなんだから
そっちの方が邪道だろw

276 :デフォルトの名無しさん:2010/05/29(土) 13:01:04 .net
音は出ないの?

277 :デフォルトの名無しさん:2010/05/29(土) 16:20:38 .net
任意のアドレスに割り当て
+-で操作して
.で鳴らす

とか考えたけどハードというか実装依存だね

278 :デフォルトの名無しさん:2010/05/29(土) 16:24:55 .net
出力したら音が鳴るインタプリタ作ってやろうかと思ったけど
よく考えたらそんな技術無かった。

279 :デフォルトの名無しさん:2010/05/29(土) 16:33:02 .net
楽な方法なら
三角波でド〜↑のドまでの単音ファイルを用意して
数値によって再生

280 :デフォルトの名無しさん:2010/05/30(日) 03:33:27 .net
出力からmidiを鳴らすインタプリタ半分完成した
音の長さや音色、テンポ、スケール、和音なんかを扱える仕様を考えてる
今日はもう寝るがな

281 :デフォルトの名無しさん:2010/05/30(日) 03:42:12 .net
>>280
ソースきぼん

282 :デフォルトの名無しさん:2010/05/30(日) 03:53:02 .net
>>281
javaだけど、思い出しつつ調べつつ書いた汚いソースだぞ
すぐには見せられんわ
文字コードを音階に対応させて再生してるだけだし

一応スクリーンショット
蛙の歌を再生中
http://www.dotup.org/uploda/www.dotup.org924517.png

283 :282:2010/05/30(日) 20:14:49 .net
とりあえず動くものが出来ました!
中のtxtをソフトの左の欄にはっつけてrunしてみて下さい!
XPなら動くと思います。
midi音源にMicrosoft GS Wavetable SW Synthを使用してます。

http://www.dotup.org/uploda/www.dotup.org925971.zip

あ、もちろん実行は自己責任で。

284 :282:2010/05/30(日) 22:07:16 .net
反応無いけどバージョンアップだよ\(^o^)/
命令の数を4096個まで実行可能にしたよ。
スペランカーフルだよ。

http://www.dotup.org/uploda/www.dotup.org926263.zip

285 :デフォルトの名無しさん:2010/05/31(月) 01:46:40 .net
あなたは神様ですか?

286 :デフォルトの名無しさん:2010/05/31(月) 03:05:01 .net
とんでもねえ、あたしゃ神様だよ

287 :デフォルトの名無しさん:2010/05/31(月) 12:48:23 .net
win7だと何も起きないのね
ちなみにwindowCloseイベントくらい処理してほしかったなぁ


288 :282:2010/05/31(月) 12:52:12 .net
>>287
何も起きないってどういうことですか?
ちゃんとクローズしますよ!初期化に失敗すると閉じないのかなぁ?

休日をそれで潰しちゃったのでツケを払うのに今忙しいんです。
ごめんね><

289 :282:2010/05/31(月) 17:58:07 .net
一応(遅いですが)仕様を連ねておこうと思います。

■インターフェイス編
・画面左欄がソース、右欄がアウトプット
・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 + 引数 : テンポを引数に設定



動作報告がない

290 :282:2010/05/31(月) 18:09:47 .net
ごめんなさい途中で送ってしまいました。。。

 2 + 引数 : 引数の音数を同時に発するように設定します
 3 + 引数 : 音の長さを設定します 引数は0〜5までそれぞれ16分音符、8分音符、4分音符、3分音符、2分音符、全音符に対応します

 * + 引数 の表記は*を出力した後引数を出力するという意味です

走り書きでごめんなさい
そして、見直すべき所がいっぱいですね

動作報告や反応がないのでどうしていいやら^^;
もうそんな下らないものはいいというのであれば去ります
もっと改良してというのであれば頑張ります

長文すいませんでした

291 :デフォルトの名無しさん:2010/05/31(月) 19:39:12 .net
>>282
Win7+JDK6だとbrainmidi.jarをダブルクリック
×ボタン(WindowClose)をクリック
無反応になるのよ


あとサンプルのsperanka.txtをエディタで開いて左ペインに貼り付けてからrunをすると
ウィンドウがすべてグレー(選択不可)になっているにも関わらず何もおきない(CPUも食わない)
になる

音源ってJavaからのアクセスのために特別な設定が何か必要だったっけ?

きれいじゃなくてもいいからソースがあれば手伝えるのだけど、さすがにjarだけだとめんどくさいんだ

292 :282:2010/05/31(月) 20:05:34 .net
>>291
原因が分かりました
デバイスオープンに失敗するとデバイスアクセス時に固まるようです
私はwin7は持っていないのですが、Microsoft GS Wavetable SW Synthが入っていないのでしょう
>>291さんのPCに入っているmidi音源を第一引数として指定し実行すれば動くと思います。(必ずダブルクオーテーションで挟むように)

>音源ってJavaからのアクセスのために特別な設定が何か必要だったっけ?
特に必要はないはずです

ソースは仕様見直し、ブラッシュアップ後にうpしようと思います
おそらく数時間後

293 :デフォルトの名無しさん:2010/05/31(月) 22:15:53 .net
>Microsoft GS Wavetable SW Synth
普通に考えてコレが入ってないのあり得ないと思うんだが
デフォルトのMIDI音源だよね?


294 :282:2010/05/31(月) 22:39:06 .net
バージョンうp
ソースと引数指定用バッチファイル同梱です!
ttp://www.dotup.org/uploda/www.dotup.org928595.zip

>>293
確かに入ってないとおかしいですよね。
ほかに原因があるような気がしてきた・・・

>>289の追伸ですが
文字コード32(スペース)は音の鳴らない空ノートを示します

295 :デフォルトの名無しさん:2010/05/31(月) 23:08:07 .net
おまえどうせXPだろ

296 :282:2010/05/31(月) 23:21:56 .net
>>295
そうですけどなにか?
XP以外のデバッグは出来ませぬ

297 :デフォルトの名無しさん:2010/06/01(火) 00:09:14 .net
やはりな・・・

インターネットの普及とインフラ整備によりMIDIは事実上役目を終えた
Vista以降は標準でMIDIの再生など出来ない

おまえだけ浮いているのはそのせい

298 :282:2010/06/01(火) 00:25:32 .net
そんな・・・
7,vistaにXPユーザ数は負けたというのか・・・?
そんなことないだろ!ここはム板だぞ!!
XPは現役のはず!


と、茶番はさておき
MIDIの再生は出来ないってのは嘘ですね、流石に^^;
使用できるMIDI音源を指定できるようにはしてますのでvista,7さんも何とか出来るはずです

299 :282:2010/06/01(火) 01:23:09 .net
どれくらいの人に動かしてもらっているか分かりませんがサンプルを
tempo
+.-
++++++++++ ++++++++++ ++++++++++ ++++++++++
++++++++++ ++++++++++ ++++++++++ ++++++++++
++++++++++ ++++++++++ ++++++++++ ++++++++++
++++++++++ ++++++++++ .
chord
>++.-.-<
init
>
++++++++++ ++++++++++ ++++++++++ ++++++++++
++++++++++ ++++++++++ ++++++++++ +++++++
main
. ++. ++. +. ++. ++. ++. +.

シンプルにドレミファソラシドを再生します
tempo chordの部分を省いてもらっても鳴ります

ソース欄に +[,.]
インプット欄に MOQRTVXY
でも同じようになります

ではおやすみなさい

300 :デフォルトの名無しさん:2010/06/01(火) 05:08:18 .net
>>282
java synthつかってみた、感動した


301 :デフォルトの名無しさん:2010/06/01(火) 08:08:41 .net
何となく虫してたけど今試してみた。すげw

302 :282:2010/06/01(火) 08:10:44 .net
>>300
動作報告ありがとうございます!
実は私の環境ではJava Sound Synthesizerが鳴らないんですよ・・・
ググると
>Java標準のシンセ(Java Sound Synthesizer)にインストゥルメントがロードされていないため
とか出るんですけど
いまいちよく分かりませぬ/(^o^)\

303 :282:2010/06/01(火) 08:19:11 .net
>>301
確かに、試すにはめんどくさくて不親切でリスクがありますよねー・・・
動かしてもらってありがとうございます!

304 :デフォルトの名無しさん:2010/06/14(月) 18:27:23 .net
最近神様が来られない。。。

305 :デフォルトの名無しさん:2010/06/14(月) 18:37:05 .net
邪道だとは思うけど、アルファベット一文字をマクロにすればかなり書きやすくなるよね。
小文字で定義、大文字で展開とか。ついでに数字一文字で繰り返しとか。
例えばこんな感じ。
9+[>8+>9+++>5+<<<-]>.>++.+++++++..+++.>-.a---AAAA.<++++++++.AA--.+++.AA.AA--.>+.
いかん、例が悪くて余り書き易そうに見えないw

306 :デフォルトの名無しさん:2010/06/14(月) 18:42:18 .net
拡張の話は別にしてもいいが
誰でも思いつきそうなのは勘弁

307 :282:2010/06/14(月) 19:16:14 .net
#defineでマクロ定義はすでに作った

308 :デフォルトの名無しさん:2010/06/14(月) 19:17:59 .net
やだ、名前残ってた
恥ずかしい

309 :デフォルトの名無しさん:2010/06/14(月) 23:15:41 .net
誰かAPIの叩き方をだな

310 :デフォルトの名無しさん:2010/06/14(月) 23:51:07 .net
>>307-308
和んだw


311 :デフォルトの名無しさん:2010/06/23(水) 00:03:38 .net
*p番のシステムコールを呼び出す命令があれば何でもできる

312 :デフォルトの名無しさん:2010/06/25(金) 03:39:19 .net
>>311 神発見

313 :デフォルトの名無しさん:2010/07/09(金) 21:37:29 .net
ここって他のbrain系のコードの解説ってお願い出来る?
スレチだったら申し訳ないが何でhelloworldになるのか分からないのがある
一応このスレの例のhelloworldは理解してるつもりです

314 :デフォルトの名無しさん:2010/07/09(金) 23:12:06 .net
どうせ他にネタもないし出してみそ

315 :デフォルトの名無しさん:2010/07/09(金) 23:33:26 .net
vectorに合った奴何ですが
={+++++++>--->+<<!-.これでHが表示されますが何故でしょう?
=!でループするのは分かってますが、考えると++しすぎて数値が何千って行っています
Hは72なのに何故Hが画面に出るのかが分からないです
今日学校で見つけてからずっと悩んでいます

316 :デフォルトの名無しさん:2010/07/09(金) 23:33:35 .net
http://www.youtube.com/watch?v=FTxgrkmX2SA

317 :デフォルトの名無しさん:2010/07/10(土) 02:00:02 .net
純bf以外なら「vectorに合った奴」じゃなくて名前を書いてくれないと・・・

318 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 04:00:09 .net
=とか!とか{とかって何だよ

319 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 05:20:18 .net
ttp://www.vector.co.jp/soft/win95/prog/se484667.html
これか。

320 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 05:29:29 .net
>>315
読んだ。

1セルがmod 256の数値だと仮定して、
終端ポインタがmem[30000]をさしていると考えると
最初のセルは
7 * (30000-1) -1 = 72
になるんだと思われる。

拡張命令の是非はさておき、
メモリのサイズが変わると結果も変わるので、
俺はあまり意味のあるプログラムだとは思わんね。

321 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 08:20:05 .net
有難うございます。
でもどうして256何ですか?


322 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 08:55:40 .net
http://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%83%88_(%E6%83%85%E5%A0%B1)

323 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 09:53:40 .net
有難うございます。
符号無しで0から255の意味が最初分かりませんでしたが255から+したら0に戻るんですね
何千って数値が行くと思っていました

324 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 14:12:28 .net
>>319
どうでもいいけどLinuxの実行バイナリのサイズ大きいな
静的リンクするとこんなにでかくなるのか
以下に本元の小ささの凄さが分かるわ

325 :デフォルトの名無しさん:2010/07/12(月) 01:23:09 .net
バイナリ配るって発想が・・・・

326 :デフォルトの名無しさん:2010/07/12(月) 02:27:30 .net
つーか32bitでUbuntuならARMでも動くのかとか突っ込みたくなるな

327 :デフォルトの名無しさん:2010/07/12(月) 11:10:21 .net
そういやCで書かれたBrainFuckのインタプリタのソースコードって公開されてなくないか?
JSとかは良く見るけどさ

328 :デフォルトの名無しさん:2010/07/12(月) 12:23:37 .net
逆じゃね?

一番多くサンプルあるのがCだろ
実装が楽だし、よくポインタ理解度チェックとして初心者の練習問題に使われてるし

歴史的経緯から考えてもCが多いだろうよ

329 :デフォルトの名無しさん:2010/07/12(月) 15:11:14 .net
ARMだったらCよりThumbで書いた方が楽しそう


330 :デフォルトの名無しさん:2010/07/12(月) 17:07:05 .net
thumbはマゾいな
楽しさなら個人的にはarmの方が上だなぁ

331 :デフォルトの名無しさん:2010/07/15(木) 21:10:21 .net
新しいesolang覚えたらHelloWorldとQuineの次は大体BFインタプリタ

332 :デフォルトの名無しさん:2010/07/15(木) 23:11:09 .net
BFのQuine書けるやつは凄い

333 :デフォルトの名無しさん:2010/07/16(金) 15:37:19 .net
BFインタプリタ作ってみようと思ったが[][][]のようにループが複数ある時どう書けばいいの?
[[]]とか中に複数あるならいいんだけど、[][]と離れると動かない

334 :デフォルトの名無しさん:2010/07/16(金) 19:07:44 .net
バックトラックのときに"]"の数を数えるカウンタを用意して、
"]"が来たらカウンタを増やす
"["が来たらカウンタを減らす
カウンタが0のときに"["が来たら、そこに飛ぶ。
でいいと思うよ。

335 :デフォルトの名無しさん:2010/07/22(木) 03:16:23 .net
こっちの方が構文が複雑だな
http://extreme.pcgameshardware.de/attachments/64656d1232652813-fallout-3-das-uberlebenshandbuch-terminal-60-.jpg

336 :デフォルトの名無しさん:2010/07/22(木) 08:14:33 .net
FO3か。それメモリダンプからパスワード当てるって設定だから、
構文も何もないよ。

337 :デフォルトの名無しさん:2010/07/22(木) 12:25:38 .net
女の没論理性はいかんともし難い。

338 :デフォルトの名無しさん:2010/07/22(木) 12:43:24 .net
仕事中暇だったから、上のbr系使ってhelloworldを出力するCソースを吐き出し
それをビルドして実行させてみた

++++++++[****{*****{*************}}-]***|>{{|+>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|<<<
<<<<<<<<<<<++++++>----->++++>+++++++++++++>---->--->}}&{>&++++++++++++++++++++>
+++++++++++>++++++++++++>---->+>+++++++>&++++++>>|}|+++++++++++++++++++>{{{&+++
+++++++>}|+>|++++++>|++++++++++++>}}|--->{{|+++++>|------->|+>|++++++>}|>|+>{|+
++++++++++++++++++>++++++++++>}}///|>|>|>|>{{|++++++++>|+++++++++++++>|++++++++
++++>|+++++++++++>}|>}|++>{{|>++++++[<----->-]<-->|--->|++++>|++++>|+++++++>}|+
+++>}|>{{|+++++++++++++++>|+++++++>|++++++++++>|++++>|---->}}|+>|++>{|+>|>++++[
<+++++>-]<->++++++++++>}|>|>|>|>{{|++++++++++>|--->|++++++++++++>|+++++++++++++
>|++++++++++>|++++++>}}|>{|++++++++>|>++++[<+++++>-]<->++++++++++>{|>+++++[<+++
+>-]<+@

./braineasing hello.txt > hello.c && gcc -o hello.o hello.c && ./hello.o && rm hello.o hello.c

ふぅ…何やってるんだろ俺…

339 :デフォルトの名無しさん:2010/07/22(木) 14:09:55 .net
暇すぎるだろw
俺にその暇分けろ!

340 :デフォルトの名無しさん:2010/07/22(木) 15:43:41 .net
暇は作り出すものだ

341 :デフォルトの名無しさん:2010/07/22(木) 15:47:44 .net
暇乞い

342 :デフォルトの名無しさん:2010/07/22(木) 19:13:26 .net
俺もやろうとしたらめんどくさ過ぎてやめたw
何時間掛かったんだ?

343 :デフォルトの名無しさん:2010/08/19(木) 23:07:17 .net
おい、おまえら向けのサイトができてたぞ。
Squeakや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

344 :デフォルトの名無しさん:2010/08/20(金) 22:13:12 .net
プログラミンでbrainfuckきてたw

作りかけのbrainfuck: http://bit.ly/cpn2FL

瓶詰堂日記
http://www.binzume.net/diary/2010-08-20#A1


345 :デフォルトの名無しさん:2010/08/20(金) 22:13:35 .net
落ちそうになってるのでage

346 :デフォルトの名無しさん:2010/08/20(金) 23:05:28 .net
sage

347 :デフォルトの名無しさん:2010/08/20(金) 23:58:38 .net
sageでも落ちないよ

348 :デフォルトの名無しさん:2010/09/13(月) 05:39:26 .net
あげ

349 :デフォルトの名無しさん:2010/09/25(土) 22:52:38 .net
Malbolgeを読める、または書ける香具師っているのかな?w

350 :デフォルトの名無しさん:2010/09/26(日) 05:21:38 .net
某大学の研究でHello Worldは書けたらしいが…
読むのは無理だろw

351 :デフォルトの名無しさん:2010/11/02(火) 02:10:50 .net
自作Brainfuck系難解プログラミング言語 Braincunt (ブレインカント) の仕様とインタプリタを公開しました。
http://www.boleros.x0.com/doc/ktlwiki/index.php?Braincunt

特別な技術も何もありませんが。

352 :デフォルトの名無しさん:2010/11/02(火) 02:15:56 .net
拡張飽きた

353 :デフォルトの名無しさん:2010/11/02(火) 07:58:58 .net
シンプルさが売りなのにごてごて付け足してもね・・・
誰もそれでプログラムを書こうとするはずない

354 :デフォルトの名無しさん:2010/11/02(火) 08:17:33 .net
むしろ命令を減らすほうに力を注ぐべきだな…

355 :デフォルトの名無しさん:2010/11/02(火) 12:20:50 .net
全メモリの正負および左右の位置を反転させるコマンドを入れれば+-と<>は節約できる?

356 :デフォルトの名無しさん:2010/11/02(火) 13:32:32 .net
できるね
それを@とすると、
< → @>@
- → @+@
と書き換えればおk

357 :デフォルトの名無しさん:2010/11/02(火) 13:40:54 .net
それでは美しさに欠ける

358 :デフォルトの名無しさん:2010/11/02(火) 13:43:28 .net
(@-@;)

359 :デフォルトの名無しさん:2010/11/02(火) 15:38:46 .net
というか、単に記号を減らしたいだけなら
> → 000
< → 001
+ → 010
- → 011
っていうふうに置き換えれば記号数は2個だ。

360 :デフォルトの名無しさん:2010/11/02(火) 16:24:23 .net
http://www.sksk.info/a.html
記号数1

361 :デフォルトの名無しさん:2010/11/02(火) 16:48:19 .net
>273を置換した。(フォントにも拠るだろうけど)場所を取らないw
;;;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.

362 :デフォルトの名無しさん:2010/11/02(火) 17:04:38 .net
bfコードをURLに圧縮してそのURLに飛ぶとすぐに実行できるサービスマダー?

363 :デフォルトの名無しさん:2010/11/02(火) 19:12:54 .net
>>355-360
それらは命令をエンコードして記号数を減らしてるだけで、命令数は相変わらず8だよね。

364 :デフォルトの名無しさん:2010/11/02(火) 20:19:41 .net
これ以上減らしたらなんも出来なくなるだろ・・

365 :デフォルトの名無しさん:2010/11/02(火) 21:14:31 .net
>>355は立派に一命令だろう

366 :デフォルトの名無しさん:2010/11/02(火) 21:15:19 .net
記号数だけではなく内部状態数も気にしないとね。

367 :デフォルトの名無しさん:2010/11/02(火) 21:27:38 .net
全メモリを書き換えるんだと思えば状態数は増えない

368 :デフォルトの名無しさん:2010/11/02(火) 21:31:43 .net
ttp://ja.wikipedia.org/wiki/Brainfuck
>開発者Urban Müllerがコンパイラがなるべく小さくなる言語として考案した。
これ大事
処理が増えてはダメだろ

369 :デフォルトの名無しさん:2010/11/02(火) 21:34:53 .net
コンパイラがなるべく小さくなるつっても
コンパイラの言語にもよるからなぁ

370 :デフォルトの名無しさん:2010/11/02(火) 22:53:30 .net
perlインタプリタをperlで書けば確実にBFより短く書けるからな

371 :デフォルトの名無しさん:2010/11/03(水) 01:30:04 .net
コンパイラを何か勘違いしてないか?

372 :デフォルトの名無しさん:2010/11/03(水) 01:42:32 .net
どういうCPUかにもよるよなあ

373 :デフォルトの名無しさん:2010/11/03(水) 05:08:07 .net
判ってない香具師が間欠泉的に置換ネタに走るスレ

374 :デフォルトの名無しさん:2010/11/06(土) 15:15:15 .net
命令数維持または微増で可読性を大幅に高めるた言語ってないのかね

375 :デフォルトの名無しさん:2010/11/07(日) 15:01:52 .net
それは知らないけど、Cのプリプロセッサ使って書いたら楽になる気はする。

376 :デフォルトの名無しさん:2010/11/09(火) 02:20:18 .net
>>362
http://ideone.com/1cNvO

URLに圧縮されてるぞw

377 :デフォルトの名無しさん:2010/11/09(火) 07:46:10 .net
>>376
これは知らなかった
確かにそれっぽいけど便利なのか・・・?

378 :デフォルトの名無しさん:2010/11/10(水) 09:14:31 .net
>>377
BrainFuckに限らず、長いソースを掲示板に貼るはるとか、
2chに貼るとソースコードのライセンスうんたらかんたらとか
その他のサンプルソース実際に動かしたらこうだぜ、ってときに便利だよ


379 :デフォルトの名無しさん:2010/11/10(水) 09:15:47 .net
>>377
一応マジレスすると、短縮URLみたいなもんだろうけどね
DBのidみたいな一意のもを常に短くなるようにhash化してるようなもんだろ。

多分同じソースコードを貼っても同じURLにならないと思うよ

380 :デフォルトの名無しさん:2010/11/10(水) 12:24:02 .net
>>378-379
処理結果が表示されてたから処理系組み込んであるのかなって思ったけど
やっぱりこれbrainfuckを動かすためのものじゃないよね
URLはハッシュだろうと単にBFコードを圧縮したものだろうとどっちにしろ読めないからいいけど
やはり専用のサイトがあったほうが便利

381 :デフォルトの名無しさん:2010/11/10(水) 12:33:41 .net
いや処理系が組み込んであるよ
brainfuckを含む多言語に対応してるだけ

382 :デフォルトの名無しさん:2010/11/10(水) 13:06:08 .net
まじかよ
使い方はよくわからんがすげーな

383 :デフォルトの名無しさん:2010/11/11(木) 09:20:46 .net
>>380
疑問に思ったら、トップページくらい見ろw

http://ideone.com/

この手のオンラインの処理系はいくつかある
今気づいたら、ここUnlambdaやwhitespaceまであるし誰得なんだよ

384 :デフォルトの名無しさん:2010/12/10(金) 18:05:07 .net
あげ

385 :デフォルトの名無しさん:2010/12/24(金) 23:32:39 .net
[]は不要


386 :デフォルトの名無しさん:2010/12/24(金) 23:33:41 .net
bFでマルチスレッドできないの?
mallocできねえの?


387 :デフォルトの名無しさん:2010/12/24(金) 23:39:59 .net
C→bfトランスレータがどっかにあったはず

388 :デフォルトの名無しさん:2010/12/24(金) 23:42:19 .net
>>386
bfでCのソース吐き出して
コンパイルコマンド打ち込め



389 :デフォルトの名無しさん:2011/02/01(火) 16:40:33 .net
携帯用のFlashで遊べるのってまだどこかに残ってる?

390 :デフォルトの名無しさん:2011/02/17(木) 07:30:40 .net
ttp://mits.s59.xrea.com/flash/down.php?id=32&h=1

391 :デフォルトの名無しさん:2011/02/17(木) 14:17:38 .net
>>390
ありがとう

392 :デフォルトの名無しさん:2011/03/04(金) 21:15:22.67 .net
すいません。コンパイルしようと思ったらvcvers32が外部と内部で実行できません。って
出てきたんですけど・・・・どうすればいいんですか?


393 :デフォルトの名無しさん:2011/03/05(土) 00:09:56.02 .net
のーみそこねこねこんぱいる

394 :デフォルトの名無しさん:2011/03/08(火) 04:24:09.65 .net
脳みそくすぐっちゃうよ?

395 :デフォルトの名無しさん:2011/03/08(火) 11:11:18.90 .net
古い!

396 :デフォルトの名無しさん:2011/03/30(水) 01:34:04.99 .net
BFのTuring完全性の証明ってどこかに無いですか?

397 :デフォルトの名無しさん:2011/03/30(水) 06:47:20.33 .net
>>396
チューリングマシンをエミュレートすることができればチューリング完全だけど、
ほとんど自明だからだれもやらないんじゃね?

398 :デフォルトの名無しさん:2011/03/30(水) 11:05:45.53 .net
http://www.iwriteiam.nl/Ha_bf_Turing.html

399 :デフォルトの名無しさん:2011/03/30(水) 17:53:35.05 .net
>>398
ありがとうございます

400 :デフォルトの名無しさん:2011/04/23(土) 13:57:46.22 .net
163 以下、名無しにかわりましてVIPがお送りします[] 2011/04/23 (土) 13:25:20.95 ID:7z50yigJ0 (3/3) [PC] ?2BP(1000)
http://up3.viploader.net/pc/src/vlpc007110.png
ぼくのかんがえたさいきょうのぶれいんふぁっく^^;;;;;;;;;;

401 :デフォルトの名無しさん:2011/04/23(土) 15:34:09.43 .net
BrainFuckでソースを出力するとCインタプリタが動くような
二重の仮想環境を作れば、ほぼなんでも出来るようになるな

402 :デフォルトの名無しさん:2011/04/23(土) 15:51:44.40 .net
なにこのVIPくさい

403 :デフォルトの名無しさん:2011/04/23(土) 22:40:02.52 .net
borlandのコマンドラインのやつでつくったら?

404 :デフォルトの名無しさん:2011/04/24(日) 01:47:20.62 .net
こういう拡張は仕様が物を言うから
手軽にできん
機能を絞るならいけるかもだが

405 :デフォルトの名無しさん:2011/04/24(日) 23:18:51.42 .net
>>401
bfで出力した文字をコマンドラインに投げればいい

406 :デフォルトの名無しさん:2011/04/27(水) 00:54:00.81 .net
プログラミングとかよくわからないけど、結局この言語だけで何作れんの?
文字しかつくれないの?

407 :デフォルトの名無しさん:2011/04/27(水) 01:11:52.64 .net
理屈の上ではなんでも作れるよ

なんでもっていう意味は、C言語やFortlanみたいな普通の言語と
同じだけの表現力があるっていうこと
たとえば、C言語で書ける処理は、かならずBFでも書ける

もちろん書きやすさにはだいぶ違いがあるけれど

408 :デフォルトの名無しさん:2011/04/27(水) 02:49:19.21 .net
なんでも作る為には独自の実装をしないといけないと思う
メモリ配置とかシステムコールみたいな
主に番地を割り当てるのかね

純粋にBFだけ考えると入出力と計算、ループだけ

これ単体でグラフィカルなプログラミングとかは無理って解釈で良いと思うよ

409 :デフォルトの名無しさん:2011/04/27(水) 03:59:46.57 .net
bfから各種APIを呼ぶエレガントな仕様案お待ちしてます

410 :デフォルトの名無しさん:2011/04/27(水) 04:41:17.72 .net
理屈は可能なのか・・・
BFが気になったからBFでプログラムの勉強してみようかなと思ったんだけど
やっぱCとかからはじめたほうがいいのかね

411 :デフォルトの名無しさん:2011/04/27(水) 04:45:52.77 .net
いくらなんでも釣りだろ
ネタ言語だぞ
これで学べることはかなりプリミティブなものに限定される

412 :デフォルトの名無しさん:2011/04/27(水) 05:08:41.41 .net
bfはアセンブラとか基本情報とか勉強した人が遊ぶ言語だから
cとは全く別物

何言語から始めるかは目的によるが
そういう話はこのスレで扱わない

この板にそういうスレあるから見たらいいよ

413 :デフォルトの名無しさん:2011/04/27(水) 09:56:47.27 .net
よく知らない言語でも、BFと同じ処理ができればチューリング完全だと言える。
その点がBFの存在意義なんじゃないかと思っている。
マトモにプログラム書く気でBFを使うのは、やめとけ。

414 :デフォルトの名無しさん:2011/04/27(水) 10:53:58.08 .net
BFマシンの開発はまだですか?

415 :デフォルトの名無しさん:2011/04/27(水) 11:37:48.30 .net
>>414
今時ならエミュレータでも充分実用的な速度が出るだろう。

416 :デフォルトの名無しさん:2011/04/27(水) 11:45:50.32 .net
言語が実用的でないのに

417 :デフォルトの名無しさん:2011/04/27(水) 11:51:06.41 .net
トランスレータを作れば……なんて胡乱なw

418 :デフォルトの名無しさん:2011/04/27(水) 15:30:13.35 .net
FPGAで誰か作ってるはず

419 :デフォルトの名無しさん:2011/05/01(日) 08:21:07.40 .net
>>409
エレガントかどうかは分からんが、これくらいしか思い浮かばない。

API呼び出し命令を追加。
(関数ポインタか何か)APIを識別する数字と、APIに渡す引数をメモリにセットしてから
API呼び出し命令を処理すると、APIが呼ばれ、戻り値がセットされる。

420 :デフォルトの名無しさん:2011/05/01(日) 10:20:12.92 .net
特定の番地のメモリがインクリメントされることをOSがトリガとして感知して起動とかかな

421 :デフォルトの名無しさん:2011/05/01(日) 11:21:13.15 .net
CPUと外部割込み機器の通信みたいになってきたな…
もしくはシステムコール呼び出しか…w

422 :デフォルトの名無しさん:2011/05/03(火) 00:12:38.86 .net
http://ray.sakura.ne.jp/asm/index.html

423 :デフォルトの名無しさん:2011/05/06(金) 10:25:20.65 .net
>>410
プログラマ向けのパズルみたいなものですよ

424 :デフォルトの名無しさん:2011/06/05(日) 11:24:55.74 .net
「ほむほむ」だけでプログラミングできる言語登場 わけがわからないよ
http://nlab.itmedia.co.jp/nl/articles/1106/02/news040.html

425 :デフォルトの名無しさん:2011/06/05(日) 16:17:20.90 .net
なんだBF系じゃないのか
長門有希とかあったよなぁ

426 :デフォルトの名無しさん:2011/06/05(日) 16:40:10.65 .net
BFジェネレータマダー

427 :デフォルトの名無しさん:2011/06/05(日) 17:21:52.56 .net
BF コンパイラが BF で記述される日はまだまだ遠い‥‥。

428 :デフォルトの名無しさん:2011/06/05(日) 17:30:41.00 .net
ほむほむ出力命令しかないのか

429 :デフォルトの名無しさん:2011/06/05(日) 17:46:47.91 .net
入力命令もあるよ
標準入力を標準出力にコピー

ほむ ほむほむほむほむ ほむ ほむほむほむ ほむ ほむほむほむ ほむほむほむ

430 :デフォルトの名無しさん:2011/06/05(日) 18:22:55.31 .net
Scalaなんだな。
うまくコンパイルできないのだが。

431 :デフォルトの名無しさん:2011/06/05(日) 20:18:58.75 .net
なるほど、解らん

432 :デフォルトの名無しさん:2011/06/06(月) 00:58:31.39 .net
>>427
ttp://code.google.com/p/awib/

433 :デフォルトの名無しさん:2011/06/06(月) 20:26:44.71 .net
>>432
へー、こりはおどきました。thanks

434 :天使 ◆uL5esZLBSE :2011/07/02(土) 11:22:56.87 .net
土方に何をいわれても

435 :デフォルトの名無しさん:2011/07/02(土) 19:43:24.37 .net

マルチスレッド対応まだ?
SIMDいつ対応するの?
グラフィックどうするの?

436 :天使 ◆uL5esZLBSE :2011/07/04(月) 16:35:35.78 .net
>>429
↓↓↓↓↓↓
「「「「「「「「「 入力命令もあるよ 」」」」」」」」」(キリッッ!!!!キリッッ!キリッきリッッッッッ
↑(キリきリッ!!!!
↓↓↓↓↓↓↓↓↓
「「「「「「「「「 標準入力を標準出力にコピー 」」」」」」」」」(←キリッッ!!ッッッッ!!!!
↑↑↑↑↑↑↑↑↑(キリッッ!!!!
↓↓↓↓↓↓↓↓↓↓
「「「「「「「 ほむ ほむほむほむほむ ほむ ほむほむほむ ほむ ほむほむほむ ほむほむほむ 」」」」」」」(キリッ!キリッ!!!キリ!!!!!!
↑↑↑↑↑↑↑↑↑(キリッ!!
死ねゴミ

437 :デフォルトの名無しさん:2011/07/16(土) 13:33:21.82 .net
また糖質が暴れてんのか

438 :デフォルトの名無しさん:2011/07/16(土) 14:03:33.90 .net
キ ポインタをインクリメント
リ ポインタをデクリメント
↑ ポインタが示すメモリ位置のデータをインクリメント
↓ ポインタが示すメモリ位置のデータをデクリメント
き ポインタが示すメモリ位置のデータを出力
り ポインタが示すメモリ位置のデータに入力
「 ポインタが示すメモリ位置のデータがヌルなら対応する」までジャンプ
」 ポインタが示すメモリ位置のデータがヌルじゃないなら対応する「までジャンプ

439 :デフォルトの名無しさん:2011/08/26(金) 08:39:55.96 .net
sage

440 :デフォルトの名無しさん:2011/10/10(月) 17:08:24.66 .net
http://www.forest.impress.co.jp/docs/review/20111006_481829.html
誰得w

441 :デフォルトの名無しさん:2011/10/10(月) 18:04:50.60 .net
そこから来たぞw

442 :デフォルトの名無しさん:2011/10/17(月) 14:57:12.47 .net
ブレインファック娘マダー

443 :デフォルトの名無しさん:2011/10/20(木) 03:13:06.37 .net
今度はKQか。

444 :デフォルトの名無しさん:2011/10/21(金) 00:33:17.39 .net
すいません。コンパイルしようと思ったらvcvers32が外部と内部で実行できません。って
出てきたんですけど・・・・どうすればいいんですか?

445 :デフォルトの名無しさん:2011/10/21(金) 10:54:05.09 .net
>>444
日本語でOK!
つーか、きっとスレ違いだ。

446 :デフォルトの名無しさん:2011/11/19(土) 20:12:50.22 .net
ポインタを例えば100進めるのに、>を100回書かずもっと短く書く事って可能?
俺の頭じゃやり方が思いつかなかった

447 :デフォルトの名無しさん:2011/11/20(日) 00:49:41.35 .net
>>446
ループを使うんだよ
100=10*10

++++++++++[>++++++++++<-]

448 :デフォルトの名無しさん:2011/11/20(日) 03:28:44.77 .net
えっ

449 :デフォルトの名無しさん:2011/11/20(日) 06:07:40.34 .net
+を100じゃなくて、>を100って話でしょ

450 :デフォルトの名無しさん:2011/11/20(日) 06:16:52.90 .net
メモリ破壊しながらなら出来る?

451 :デフォルトの名無しさん:2011/11/20(日) 13:23:17.26 .net
現在地から100番地先まで全部ぶっ壊しても良ければ
[-]>++++++++++[<++++++++++>-]<[>[-]<[->+<]>-]

452 :デフォルトの名無しさん:2011/11/20(日) 22:01:13.38 .net
2〜99番地のデータを0〜97番地に退避しながら100まで移動
0〜1番地は破壊される
[-]>[-]++++++++++[<++++++++++>-]<--
[[>+<-]>>[<<+>>-]<-]>>

100まで行った後にデータを元に戻しながら0まで戻るのも書いてみたけど、
合計すると100バイト超えちゃったよ

453 :デフォルトの名無しさん:2012/01/08(日) 23:01:39.83 .net


454 :デフォルトの名無しさん:2012/01/24(火) 00:09:44.35 .net
misaをLinuxに導入できないんだが

455 :デフォルトの名無しさん:2012/01/25(水) 16:50:44.57 .net
ttp://www.hevanet.com/cristofd/brainfuck/dbfi.b
ここのより短いインタプリタってある?

456 :デフォルトの名無しさん:2012/02/01(水) 04:20:22.93 .net
これって一応C言語並に複雑な事出来るらしいけど
実際そこまで作りこんだソフトとかあんの?

457 :デフォルトの名無しさん:2012/02/01(水) 14:05:51.04 .net
あるわきゃない

458 :デフォルトの名無しさん:2012/02/21(火) 12:51:21.12 .net
書きたいなら止めない

459 :デフォルトの名無しさん:2012/03/17(土) 10:19:23.06 .net
標準入力と標準出力しか無いからな。出来ることは自ずと限られてくる。

そこでだ、画面同期('?')や出力位置設定('X','Y')といったゲーム用命令を追加した拡張BF
"a brainf**k console develop environment for game" (ABCDEFG)
というのを考えた。
お前ら実装してくれていいぞ。

460 :デフォルトの名無しさん:2012/03/17(土) 10:51:14.07 .net
標準入出力があればXと通信できる

461 :デフォルトの名無しさん:2012/03/17(土) 11:26:35.24 .net
お前ABCDEFGが言いたかっただけちゃうんかと

462 :デフォルトの名無しさん:2012/03/17(土) 14:05:06.19 .net
エスケープシーケンスでいいじゃんね

463 :デフォルトの名無しさん:2012/04/20(金) 00:55:10.37 .net
這い寄る混沌:「(」・ω・)」うー(/・ω・)/にゃー」でプログラムが書ける言語「Nyaruko」登場 - ねとらぼ
http://nlab.itmedia.co.jp/nl/articles/1204/19/news112.html

この手のネタは正直お腹いっぱいだけどまあ一応

464 :デフォルトの名無しさん:2012/04/28(土) 09:01:42.47 .net
http://toro.2ch.net/test/read.cgi/tech/1160406514/573

これだから年寄りは……

465 :デフォルトの名無しさん:2012/06/29(金) 23:15:40.90 .net
BFのほかにミニマルな言語ってないのかね

466 :デフォルトの名無しさん:2012/06/30(土) 00:44:26.73 .net
unlambdaとかpure lispとか。

467 :デフォルトの名無しさん:2012/06/30(土) 02:16:07.04 .net
Grassとか。

468 :デフォルトの名無しさん:2012/06/30(土) 15:20:20.63 .net
lazy-Kのiotaとかjotとか

469 :デフォルトの名無しさん:2012/07/02(月) 02:52:05.32 .net
ttp://code.google.com/p/zozotez
bfで書いた pure lispなんてのもあるんね

470 :デフォルトの名無しさん:2012/07/27(金) 05:29:25.22 .net
デバッグ支援ツールみたいなものを作ったけど需要ある?

http://www.dotup.org/uploda/www.dotup.org3242807.7z.html

471 :デフォルトの名無しさん:2012/07/27(金) 05:55:58.63 .net
なくもない。
が、今は余裕がないので
暇になったら貰う。

472 :470:2012/07/29(日) 22:08:54.95 .net
>>470は期限切れ削除されました。必要な方いらっしゃったらレス下さい。

473 :デフォルトの名無しさん:2012/07/30(月) 16:08:41.10 .net
ttp://www.hevanet.com/cristofd/brainfuck/dbfi.b
なんでインタプリタとして作動するのかだれか解説してください

474 :デフォルトの名無しさん:2012/07/30(月) 18:27:46.26 .net
ここに解説があるよ
http://www.hevanet.com/cristofd/08.html

475 :デフォルトの名無しさん:2012/07/30(月) 22:08:46.02 .net
>>474
thx

476 :470:2012/08/01(水) 09:14:17.07 .net
http://www.dotup.org/uploda/www.dotup.org3262233.7z.html

ステップ実行,ブレーク,コンソール出力とかできます.
メモリは勝手にダンプします.HEXとASCII文字(21-7E)で1行に8つずつ吐きます.
実行した命令の数を吐きます.かかった時間も吐きます.
入力は,事前にたくさん打っとけば,なくなるまで一時停止せずに使います.何も入力されていなければ一時停止します.
Cっぽい擬似コードも吐きます.

477 :デフォルトの名無しさん:2012/08/29(水) 15:11:57.69 .net
BFって気合次第でバイナリファイルの出力とかできるんじゃね?
と思い、bmp出力をさせてみた。
http://www.mediafire.com/?r853ewgh62fv11k

478 :デフォルトの名無しさん:2012/11/24(土) 23:06:48.77 .net
+++++[>++>+++[<]>-]>[<+++++>>+++
++>+++<<-]<[>++<-]+++[>>++<<-]>>+.<+.<+
++[>++<-]>+..<++[>+<-]>+.>>++.[<]++
+++[>>+++<<-]>>.<.<++[>++<-]>-.>>>++
+[<<<-->>>-]<<<.<++++[>--<-]>.>>[<+>-]++[<-->-]<.

やっとできた(´・ω・`)

479 :デフォルトの名無しさん:2012/11/25(日) 00:27:44.86 .net
++++[>+++<-]>[<+++++++>->+++++<]+
+[<-->-]>[<++>>++<->-<]++++[>>+++
++<<-]>[<++>-]>[<<->+>-]+++[>++
+<-]>+<<[>>+<<-]>>[<+<+[>]<-]<[<]>.>>--
-.>++>>++++[>++<-]>[<++>-]<[<+>-]<.<.[<]>.>
>.>>.<.[<]>.>>.[<]>.>>.>>.[<]>.>>.>.[<]>.[>]+
+[<<<++>>>-]<<<.[>]+++[[<]>>--[>]<-]<[<]>>.[>]+
++[<<<++[>]<-]<<<+.[<]>++.>>---.[>]>++
++[<++++>-][[<]>+[>]<-]<[[<]>+[>]<-]<[<]>+.++.

480 :デフォルトの名無しさん:2012/11/26(月) 21:01:14.60 .net
最近、Brainfuckにはまりました。
JavaScriptインタプリタを作ってみましたので、ぜひ使ってみてください。
http://upup.bz/brain_f.html

481 :デフォルトの名無しさん:2012/11/26(月) 21:13:54.07 .net
JavaScriptをBFで書いたのかと思って期待したじゃないか

482 :デフォルトの名無しさん:2012/12/27(木) 21:09:24.77 .net
そろそろ実用的なライブラリを
つくれうぜ

483 :デフォルトの名無しさん:2012/12/27(木) 21:33:56.78 .net
何番地と何番地を引数にして何番地に返すってか?

484 :デフォルトの名無しさん:2012/12/31(月) 01:42:33.47 .net
実行環境で一番おすすめのってどれ?
ぐぐったらたくさん見つかるのだけどどれもイマイチ

485 :デフォルトの名無しさん:2012/12/31(月) 01:51:12.51 .net
>>484
大して難しくないんだから自分で「イマイチ」じゃないように作ればいいじゃん。
尤も、他人に「イマイチ」である理由を説明できない位だと難しいかも試練が。

486 :デフォルトの名無しさん:2012/12/31(月) 03:03:23.04 .net
ttp://4mhz.de/bfdev.html

487 :デフォルトの名無しさん:2012/12/31(月) 13:03:46.90 .net
brainfuckでbrainfuckインタープリタを作ってみた

488 :デフォルトの名無しさん:2012/12/31(月) 13:18:52.64 .net
http://www.hevanet.com/cristofd/brainfuck/dbfi.b

489 :デフォルトの名無しさん:2013/01/09(水) 05:22:09.66 .net
部室の入り口にbrainf*ckのコードが書いてあった

490 :デフォルトの名無しさん:2013/01/09(水) 21:44:15.84 .net
>>489
うp

491 :デフォルトの名無しさん:2013/01/22(火) 23:39:43.75 .net
変形版Brainfuck

ジャンプ先のプログラムカウンタの値を記憶するためのスタックを用意しておく

  > ポインタをインクリメント
  < ポインタをデクリメント
  + ポインタが示すメモリ位置のデータをインクリメント
  - ポインタが示すメモリ位置のデータをデクリメント
  . ポインタが示すメモリ位置のデータを出力
  , ポインタが示すメモリ位置のデータに入力
  * 現在のプログラムカウンタの値をスタックに入れる
  / ポインタが示すメモリ位置のデータがヌルでなければ、スタックから取り出した値までジャンプ
   ヌルならばスタックから値を抜き去り、次の命令にジャンプ


本家BFの場合は対応する括弧を調べる作業が必要だが変形版だとその必要はない
そのかわり後方へのジャンプはできないが、原理的には本家と同じくチューリング完全(…だと思う)

492 :デフォルトの名無しさん:2013/04/05(金) 03:22:33.38 .net
ぼくもはじめます

493 :デフォルトの名無しさん:2013/04/13(土) 20:04:41.89 .net
>>491
後方ジャンプがないとチューリング完全にならないと思う

494 :デフォルトの名無しさん:2013/05/04(土) 01:56:17.45 .net
代入式を導入してみたい

495 :デフォルトの名無しさん:2013/05/05(日) 18:18:52.80 .net
どこになにを代入すんだよ

496 :デフォルトの名無しさん:2013/05/05(日) 20:44:08.00 .net
=(>>)
二つ後の値を現在の場所に代入

とか

497 :デフォルトの名無しさん:2013/05/05(日) 21:43:34.84 .net
いっそのこと膨大な糖衣構文を作ったほうがいいかと

498 :デフォルトの名無しさん:2013/05/05(日) 21:51:36.40 .net
"Syntactic sugar causes cancer of the semicolon."

499 :デフォルトの名無しさん:2013/05/05(日) 21:55:07.84 .net
(>)|(>>)
1つ後の値と二つ後の値のビット論理和を現在の場所に代入

(>)||(>>)
ビット論理和じゃなくて普通の論理和

500 :デフォルトの名無しさん:2013/05/05(日) 21:59:04.74 .net
(>)|(>>))

501 :デフォルトの名無しさん:2013/05/05(日) 22:00:24.43 .net
((>)|(>>))|((<<)|(<))
1つ後の値と二つ後の値のビット論理和と
2つ前の値と一つ前の値のビット論理和の
ビット論理和を現在の場所に代入

502 :デフォルトの名無しさん:2013/05/05(日) 22:02:34.14 .net
([[[[[)<

503 :デフォルトの名無しさん:2013/05/05(日) 22:14:45.86 .net
Error: No right blanket

504 :デフォルトの名無しさん:2013/05/05(日) 22:40:48.91 .net
Use newspaper, instead.

505 :デフォルトの名無しさん:2013/05/05(日) 22:52:05.37 .net
([[[[[)< >(]]]]])

506 :デフォルトの名無しさん:2013/05/06(月) 00:41:08.24 .net
メモリフィールドが階層的になってて
特定の番地を全ての階層で同期とかできると楽しそう

507 :デフォルトの名無しさん:2013/05/06(月) 08:26:09.23 .net
オブジェクト指向のBrainFuckとか作れないかな?

508 :デフォルトの名無しさん:2013/05/06(月) 08:31:01.82 .net
コンパイラ大きくしたら意味無いじゃん(至言)

509 :デフォルトの名無しさん:2013/05/06(月) 09:40:04.34 .net
プリプロセッサを巨大化させよう(提案)

510 :デフォルトの名無しさん:2013/05/06(月) 13:55:57.84 .net
fork機能つけようぜ

511 :デフォルトの名無しさん:2013/05/06(月) 19:27:05.67 .net
brainfuck拡張するなら既存の言語でいいじゃん?

512 :デフォルトの名無しさん:2013/05/06(月) 19:33:06.10 .net
ぐぬぬ

513 :デフォルトの名無しさん:2013/05/07(火) 03:27:27.06 .net
ぐ  ポインタをインクリメント
ぬ ポインタをデクリメント

514 :デフォルトの名無しさん:2013/05/10(金) 21:00:06.63 .net
入力された文字列の文字数の取得なんてできるんですかね

515 :デフォルトの名無しさん:2013/05/10(金) 21:04:10.53 .net
[;>+<].

わかんね

そもそもint[]の要素数とか無いだろ

516 :デフォルトの名無しさん:2013/05/11(土) 01:48:40.71 .net
文字入力は入力された一文字をポインタが指すメモリに代入するだけだろ
文字列を入力しているのは処理系がバッファを使ってるだけなんでは

517 :デフォルトの名無しさん:2013/05/11(土) 20:01:40.22 .net
>>515
最後は「>.」じゃないかな
あと、文字数が256以上の時と、マルチバイト文字を含む場合にも対応できるようにしたいね

518 :デフォルトの名無しさん:2013/05/28(火) 14:26:09.78 .net
ためしに 256回回る空ループを書いてみてくれ

それを見れば >>514 も安心して成仏することだろう

519 :デフォルトの名無しさん:2013/05/28(火) 21:10:00.01 .net
+[+]

こんなんでいいの?

520 :デフォルトの名無しさん:2013/05/28(火) 23:01:12.42 .net
文字入力は呼び出し側の責任としても
ループ回数はコード内に書かれるべき…じゃないのか

521 :デフォルトの名無しさん:2013/11/07(木) 04:13:05.65 .net
BFのコンパイラ書いているのですが、最適化の議論ってどこかにありますか。
思いついて実装したのは、
@連続する+-や<>をまとめる(これは自明。>>>>> をadd r0, #5 にするとか)
Aメモリからレジスタに値をロード済みかを覚えておいてロード命令を減らす
です。
考えているだけのは、ループの頭でポインタの位置が不変かを判断し、ポインタの移動範囲を検出して、レジスタに割り当てるというものです。
例えば[>+<-]のようなループの場合、ポインタは当初の値(0)と次の値(+1)にしか移動しないので、これらの指すデータをレジスタに割り当て、
ループ脱出時にメモリに書き戻してやればいいかなと考えています。

動的コード生成をしているので軽い処理がいいのですがそうでないのも知りたいです。
対象CPUはARMで、使用マシンはなぜかHP50gっていうグラフ電卓です。

522 :デフォルトの名無しさん:2013/11/07(木) 12:32:42.32 .net
面白そうなお題だな。
空き時間に考えてみよう。

523 :デフォルトの名無しさん:2013/11/07(木) 12:45:19.07 .net
いっそC++へのトランスレータにして、後はC++コンパイラの最適化に任せるのはどうだろう。

524 :デフォルトの名無しさん:2013/11/07(木) 13:18:00.81 .net
>522 アイデアが出たらぜひ教えて下さい。
>523 それって既にあるのでは。BFでプログラムするのと同様でパズルみたいなものと思ってください。

[>+<-]をコンパイルした実行命令数(N=ループ回数)
@素朴版 12N+3
Aロード最適化 11N+3
B>+< を最適化 9N+3
Cレジスタ最適化 5N+6
D手動コンパイル 4N+6

詳細は、
http://pastebin.com/pk8fST8h

レジスタ割当:
r0: 汎用
r1: ポインタ
r2: [r1, #1]
Aはr0と[r1]がエイリアスになっているかを覚えてロード命令を削減
Bは>+<のようなパターンでポインタのinc/decを省く。
CはAに加えてr2と[r1,#1]をエイリアスにする。
Dは自動化は考えずに手でガリガリ記述

525 :524:2013/11/07(木) 15:18:20.89 .net
脳内コンパイラがこんなコードを生成しました。
ローカルな最適化では定数部を除いてこれ以上は無理そうですね。
ldrb r0, [r1]
ldrb r2, [r1, #1]
cmp r0, r0, #1
b l1
l0:
add r2, #1
subs r0, #1
l1:
bne l0
strb r0, [r1]
strb r2, [r1, #1]
実行命令数 7 + 3N

本来なら、
ldrb r0, [r1]
ldrb r2, [r1, #1]
add r2, r0
strb r2, [r1, #1]
mov r0, #0
strb r0, [r1]
実行命令数 6
とか定数命令でできるのですが、、、

526 :デフォルトの名無しさん:2014/06/08(日) 09:59:54.00 ID:083ejc+8.net
誤爆申し訳ない
世界はBrainFuckで記述されたのかもしれない

527 :デフォルトの名無しさん:2014/06/08(日) 10:32:43.54 ID:397riybv.net
だれか BrainFuck の LLVM フロントエンド作らないかな

528 :デフォルトの名無しさん:2014/06/08(日) 11:29:37.30 ID:qU5LgJI1.net
神はこれを見てよしとされた。はassert文

529 :デフォルトの名無しさん:2014/06/20(金) 07:05:56.84 ID:ha/mjnLs.net
BFオワタ・・・
http://pc.watch.impress.co.jp/docs/news/yajiuma/20140620_654252.html

IT'S SHOWTIME
HEY CHRISTMAS TREE isLessThan10
YOU SET US UP @NO PROBLEMO
HEY CHRISTMAS TREE n
YOU SET US UP 0
STICK AROUND isLessThan10
GET TO THE CHOPPER n
HERE IS MY INVITATION n
GET UP 1
ENOUGH TALK
TALK TO THE HAND n
GET TO THE CHOPPER isLessThan10
HERE IS MY INVITATION 10
LET OFF SOME STEAM BENNET n
ENOUGH TALK
CHILL
YOU HAVE BEEN TERMINATED

530 :デフォルトの名無しさん:2014/08/29(金) 21:49:14.52 ID:ttFFbJAa.net
うつくしくない

531 :デフォルトの名無しさん:2015/12/15(火) 12:43:11.90 ID:Qvgua2wU.net
えst

532 :デフォルトの名無しさん:2016/03/09(水) 22:33:27.65 ID:m6u1yQ86.net
,
 [eax,ebx,ecx,edx,esi,edi][*ptr&0x0f] = ptr[1] if *ptr>>4==0
 ptr[1] = [eax,ebx,ecx,edx,esi,edi][*ptr&0x0f] if *ptr>>4==1
 in eax, ptr[1] if *ptr>>4==2
...


みたいな感じでいけそう

533 :デフォルトの名無しさん:2016/03/29(火) 09:32:40.37 ID:/c8bAcK4.net
サッカーブッシュ日本代表日程ぷあたん(しゅっちょうまいくろ教育長交代)春文執行40代売上差額シュガーチョコ
https://www.youtube.com/watch?v=NDq1QoJY0nY宇ドナルドアナリストパワーストーンコーチングとしまえん
サッカーブッシュ日本代表日程古本屋よしたけしゅっちょうちょこしゅがー
ディーラー税務署天才開発者死亡詰みヨミドクターマイクロサービス不足
サッカーブッシュ日本代表日程ぷあたんシフト光金さかい強制バイト人権侵害問題
春分資源執行ニューヨーク低原価ぼったステーキソルトレイク福岡横浜新橋奴隷課金パチシフト強制バイト問題新潟米センター生残
コスメ24チャリティー隠れ40代生活保護プレイボーイバイトレードいたりあん接待問題
マスコミKARDローンケーオーサービス不足婚活パーティー寄付金執行原発ビジネス
FBIチャイニーズタイホテル売上事務所ガチャ決算ガチャキャンペーン(販売報道陣過激派組織向携帯最新情報提供終了
校長発言細心注意ノートン産廃エラー(著作権クレーム中国反応融資高額教育費)(中国捕鯨団体40代社員サッカーコメント
高額入学金ヤフウ新橋大学ヤフウ新橋理事長FX経費 おじや50代資産ガリバズフィード40代エリート

534 :デフォルトの名無しさん:2016/08/07(日) 17:02:49.48 ID:sg2m+nAp.net
>>1

535 :デフォルトの名無しさん:2017/03/09(木) 20:43:21.75 ID:2U142ZF0.net
BFでアッカーマン関数実装できる猛者はいないか?

536 :デフォルトの名無しさん:2018/05/23(水) 23:01:23.24 ID:Au5e7VGg.net
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

67IJR

537 :デフォルトの名無しさん:2018/07/04(水) 23:06:42.04 ID:gFgZc5FG.net
2Q3

538 :デフォルトの名無しさん:2018/07/06(金) 12:40:55.73 ID:uTPDH9XV.net
67IJR

総レス数 538
125 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200