BrainFuckとは
難解プログラミング言語の一つ。
オシシメサイトは
http://www.google.co.jp/ でも日本語だと情報は皆無に等しいぞ☆
月刊Interfaceは神の雑誌です。
以下俺的見解
・スレッドタイトルに全命令が入る素敵な言語。
・1レス内に全命令のリファレンスが入る素敵な言語。
> ポインタをインクリメント
< ポインタをデクリメント
+ ポインタが示すメモリ位置のデータをインクリメント
+ ポインタが示すメモリ位置のデータをデクリメント
. ポインタが示すメモリ位置のデータを出力
, ポインタが示すメモリ位置のデータに入力
[ ポインタが示すメモリ位置のデータがヌルなら対応する]までジャンプ
] ポインタが示すメモリ位置のデータがヌルじゃないなら対応する[までジャンプ
んじゃ2getでもしとこうかね
マイクロBASICみたいな物か。
@を出力するコードを以下に示しますヨ。 @のアスキーコードは64なので、文字表示用メモリ(おまえらが決めれ)を 64回インクリメントして、.で表示するわけだ。 まずは単純に ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. 64回インクリメントー。だせー。 次はループとか使って >++++++[<++++++++++>-]<++++. とりあえず月刊Interface2002/9に習って、 1bite目を文字用、2bite目をカウンタ用とす。 んで、カウンタ用にポインタを移動(>)して、6回インクリメント(++++++) ループに突入([)文字用のメモリにポインタを移して(<) 10回インクリメント(++++++++++)んで、カウンタをデクリメント(>-)する。 これで10*6で60回インクリメントするわけだ。あとは++++と64まで合わせて表示! 出たぜおいアットマーク!ヤフー!ミッションコンプリー!
>>3 それに近いけど、難解プログラミング言語の名前が指す通り
わざと読みにくくするって魂胆だね。いやらしい。
でもアレだよ。プログラミングのパズル的な面白さを
思い知らせてくれやがる憎いぜあんちくしょうなわけさ。
受け売りだけどね。
>>5 はmeだけど、まあ別に固定じゃなくてもいいけどSA
つかさ、ワシ今日初めて触ったんですけどさ、
本当に
>>5 に書いた通り面白いんですってば。
まあ真の面白さはその単純っぷりを活かして激しく特殊な
処理系を作ったりすることらしいけどね。C言語をポインタやっと理解したての
ワシにゃちょっとまだキツイかにゃー。
これif文とかどうすればいいんだ?
むしろMIUシステムみたいであこがれてしまうな、最小限の インストラクションセットw つか、この言語に0(またはNULL)はないの?
>>1 読んだだけだけど
これチューリングマッスィーンじゃないの?
>8 if文作ってみた。
[->-<]>[ ]
メモリ[0][+1]をコンペアして同じならカッコ内実行。元の値は完璧破壊。
それよりこれどうやって値コピーすんだ
.NET Frameworkに対応してるの?
13 :
デフォルトの名無しさん :02/10/31 10:43
14 :
デフォルトの名無しさん :02/10/31 18:46
正負判定だけでこんななってしまった >>>++[<++++++++[<++++++++>-]>-]<<<[>>>+<<<[>[-[>]]>>+[<]<<-]]>>>>[-]<-[<<<->>>[-]]<<[<+>[-]]<
15 :
BF ◆leSXCx/JO2 :02/10/31 19:41
それが醍醐味ですよ つかまったくわからん。
おもしろそうだね。暇なとき遊んでみよう。
17 :
デフォルトの名無しさん :02/10/31 20:38
>>10 値のコピー
[>+>+<<-]
>>[<<+>>-]<<
元の値を消耗して2つの値を作る
>>1 この言語って、制限付の環境でランダムに配置して実行したら、
進 化 し ま す か ね ?
19 :
デフォルトの名無しさん :02/10/31 22:31
す る ん じ ゃ ね え の ?
>++++++++[<++++++>-]<[>+>+>+<<<-]>[<+++>-]<.>>[<++++>-]<.<---
-----------.>+.<.>+++.<.>>>--[<+++++>-]<.<<.>---------------.
かなり汚いし、全然最適化されていないが、とりあえず、
>>1 へのメッセージです。
単に文字列作成するだけでも、これ楽しいよ。
とくに、どうしたら最も短くできるとかとか考えると面白いかもよ。
ああ、一つ言い忘れた。文字コードはShift_JIS。
せめて関数定義かマクロ定義が欲しい あと、ループ組めるの?
Shift-JISが使える処理系がそもそもないよな
>>24 インタプリタなら一時間もあれば作れると思うが
>>24 ごめん、windowsでインタプリタで走らせていたから、
Shift_JISで作っちゃった…。
nkfなり使って、変換してくれ。
29 :
デフォルトの名無しさん :02/11/01 23:20
30 :
デフォルトの名無しさん :02/11/01 23:43
Ruby!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>BrainFuck
.∧_∧ ) ( ) | / f ( _ノ \ | | ~ | A_∧ | | | _ _ .' . ・,‘ <Ru)`y´>. / - ―― = ̄  ̄ ̄`:, .∴, .’ ⊂⊂ ) / __ ', ・,‘ ' ⊂⊂__/ / ,  ̄ ̄ ――=・, ’ .∴・,‘ ' / / .∴ ' / / _____ /ヘ/ /旦/三/ /| !_/ | ̄ ̄ ̄ ̄ ̄| .| | 松本万歳.|/
>>29 おお。7行スレは巡回してるから2乗にうれしいなあ。
さすがにBFonBFは7行じゃ無理だろうけど、他のいろいろな言語でも
試してみようかなあ。なんたって世界一小さいコンパイラを作るために
作られた言語だしな。勉強がてらな。
>>30 BFvsRubyじゃさすがに同意せざるを得ないな(藁
33 :
デフォルトの名無しさん :02/11/02 00:44
34 :
デフォルトの名無しさん :02/11/02 00:51
おお,チューリングマシン(に毛が生えたもの)じゃないか。 授業で色々やらされたなあ<チューリングマシン
35 :
デフォルトの名無しさん :02/11/02 02:55
これ四則演算とかできるの? なんか物凄く手間かかりそうだね。
Rubyかよ
+[] って無限ループになる?
39 :
デフォルトの名無しさん :02/11/02 11:36
>>39 カコ(・∀・)イイ!
つかメモリ内容表示むっちゃ便利なんだけど。
わかりやすくなる。BFにとっちゃあるまじき行為だけどな(わ
仕事もせずにこればっかりやってた。 符号無しchar→10進文字列変換。itoa()だな。表示ルーチンはあとで作る・・・ ,[>+<-]-[>[>>+>+<<<-]>>>[<<<+>>>-]<[-[-[-[-[-[-[-[-[-[>+<[-]]]]]]]]]]]> [-<<+<----------[>>+>+<<<-]>>>[<<<+>>>-]<[-[-[-[-[-[-[-[-[-[>+<[-]]]]]]]]]]]>]<<<]
なら、俺はatoi()もどきを作ってみた。ただ、032と必ず三桁にする必要があるんだけどね、、、 067と入力するとCと出力してくれます。たぶん。 ++++[>++++[>+++<-]<-]>>>,>,>,<<<[>->->-<<<-]>>> [>+<-]<[>+++++[>++<-]<-]<[>+++++[>+++++[>++<-]<-]<-]>>>.
ごめん、100の位の計算が間違っていた…。 ++++[>++++[>+++<-]<-]>>>,>,>,<<<[>->->-<<<-]>>> [>+<-]<[>+++++[>++<-]<-]<[>+++++[>+++++[>++++<-]<-]<-]>>>.
楽しいな、これ...
45 :
デフォルトの名無しさん :02/11/03 08:14
>>45 緑色のカーソルが点滅してる黒いところをクリックしてキーを打つ。
エコーバックはないみたい。
>>46 エコーバックいれますた
てか exe 版触ってないんでそこらへんどう動かしていいかよーわからん。
まだ Netscape 未確認。実行中にストップとかオスとエラー起きそうな気が。
49 :
デフォルトの名無しさん :02/11/03 09:37
>サクーシャ ASCIIコード表頼む
>>50 ステップ実行を連打するか
自分で作るかだな。
簡単だぜ。
>>51 一応コード欄で [Enter] キー押しまくると [ステップ] ボタン連打と同じ
動きになるとおもいます。
ゴメソ IE の MS JVM じゃならなかった。[ステップ] ボタンにフォーカス あてて [Enter] 押しまくりだす。
>>50 ブレークポイント前にポインタを適当な位置まで動かして , 命令、
文字入力待ちになったところで中断、とか。
>>39 つか、256 バイトも使い切れない (w
新人にコンピュータ・リテラシーの基礎を教えるには良い教材ではないかと。
00~FF までを出力してみるコード >>++++++++++<++++++++++++++++[<.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+>>.<-]
↑何もしないコード。
コンパイラ作って。
高階の機能がほしいな。メモリ上のプログラムを実行する機能。 >を1、<を2とか対応付けて、!でポインタが指す場所から実行とか。 ポインタの退避と復帰もほしいな。 …これらをまずBrainFuckで作ればよいのか?
SKIコンビネータの方が単純で面白い
SKIコンビネータ 式::= k (定数) | S | K | I | (式 式) 括弧は適宜省略してよい。E1 E2 E3は ((E1 E2) E3)の略。 これだけで自然数の演算はぜんぶ書ける。
>>66 ポインタまたはそれに準ずる機能が無いと
プログラミング言語にはなり得ないかと
思うんだがどうなんだろうね
規則 S x y z = (x z) y z K x y = x I x = x
結構苦戦したけどitoa()でキタ━━━━━━(゚∀゚)━━━━━━ !!!!! [>+<-]->>+<[>-]>[->>]<<[ [>>+>+<<<-]>>>[<<<+>>>-]<[-[-[-[-[-[-[-[-[-[>+<[-]]]]]]]]]]]>[-<<+<---------- [>>+>+<<<-]>>>[<<<+>>>-]<[-[-[-[-[-[-[-[-[-[>+<[-]]]]]]]]]]]>]<<] <+[->++++++[<++++++++>-]<.[-]<+] 制約 ・ポインタから右はすべてゼロであること ・itoa()といいながらunsigned char
結構おもろいねこれ。 今、関数呼び出し機能つきインタプリタ作ろうかなと思いつつ ちんげヲ毟ってるんだけど・・・。 現状のBFの仕様に追加 @関数宣言(ファイル名指定) ^ 関数ポインタを左にシフト ~ 関数ポインタを右にシフト ! ポインタのさしてる関数を実行 関数専用の変数スコープは存在しない。 イメージソース main.bf # 関数宣言 @tolower.bf #ファイル名指定 @toupper.bf #ファイル名指定 ,~!.^!. #入力を大文字と小文字で出力するプログラム #入力を受け取り(,)、関数ポインタを右に移動(~)して関数実行(!)、そして出力(.) #さらに関数ポインタを左に移動(^)して関数実行(!)、出力(.) tolower.bf >+++[<++++++++++>-]<++ toupper.bf >+++[<---------->-]<-- どうだろう? あと、#以降はコメント扱いでいいのかしら?
コメントや関数があったらもう難解プログラミング言語じゃないがな
メモリ上のルーチンを実行とかできるなら幅が広がるのだが。
>>72 確かにそうだ、はじめてインタプリタ作成に成功して浮かれて本質を見失った・・・。スマンコ
<[,.]>これが世界の全て、何も足さない、何も引けない。
>>74 誤:<[,.]>
正:<[+-,.]>
まつがった。
>>74 いや、難解じゃなくて極少プログラミング言語とかなら
いいんでねえの?
実用性をもとめてはいけいない
馬鹿っぽさは追究してもいいかも
初心者御用達 hello, world を最小ステップで作れ
BrainFuck チップ作ったらめちゃくちゃシンプルな CPU とめちゃくちゃ 大容量 & 高性能なメモリ構成になりそうな気が。
>>80 つーか、言語そのものがマシン語みたいなもんじゃん。
[と]を即値オペランドの相対条件分岐命令に置き換える程度で十分。
BF をネイティブコードとする CPU なら設計楽そうだな。
>>82 機械語はまだ決まってないよ
今のところ、プログラムとデータは完全に別物
統合できたら
>>63 の言う高階の機能ができる。
現状だと、プログラムメモリとデータメモリは完全に別物なんだね。 CPU コード作るなら、'+' や '>' をそのまま使えばいいかも
1つの場所にどのくらい大きい数が入るかも決まっていない。
入出力の仕様から察すると、8bit でいいんじゃない?
>>66 Church numeral を使えば定数 k は要らないんじゃねえの?
89 :
デフォルトの名無しさん :02/11/05 05:14
>>87 そだね。
やっぱSKコンビネータの方が単純だし(なんせ2命令しかない)
定義もきっちりしてるし、
データとプログラムを区別なく扱えるから
面白いよ。
関数コールはあると面白いかも。関数というよりサブルーチンだが。 例えば、 ( 関数へのポインタ++ ) 関数へのポインタ++ ! 関数ポインタをコール ; 区切り(returnと、ラベルのようなもの) とかして、 !!!(!!!!);++++++++++++++++;.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+; こんな感じに書くっての。
関数はいらないだろ 元開発者が関数を入れなかったのには理由もあるだろうしな
>++++++++++[<++++++++++>-]<++++.> >++++++++++[<++++++++++>-]<+.> >++++++++++[<++++++++++>-]<++++++++.> >++++++++++[<++++++++++>-]<++++++++.> >++++++++++[<++++++++++>-]<+++++++++++.> >+++++++[<+++++++>-]<-----.> >++++++[<++++++>-]<----.> >++++++++++[<++++++++++>-]<+++++++++++++++++++.> >++++++++++[<++++++++++>-]<+++++++++++.> >++++++++++[<++++++++++>-]<++++++++++++++.> >++++++++++[<++++++++++>-]<++++++++.> >++++++++++[<++++++++++>-]<.> とりあえず・・・。
インターフェース スレってあるのだろうか。。
>>93 難解プログラムだからね、、関数は実装系に依存するって感じで。
作成したい人は作成してみるのもいいのかもね。
そういう創造性を産むために実装してないのかも。
ここまで低レベルなんだったら,やっぱりデータとプログラムを分けないでほすぃ
関数呼び出しと jump を統一してみるとか。 [ や ] の分岐先を、対応する括弧じゃなくて、 pointer の先にしてみるの。 帰り方は…飛んだときに、 pointer に飛ぶ前の位置を書き込まれるように、とか。
チューリング互換ということは、再帰関数も計算できるんだよねえ。 どうやるんだろう。
↓このインタプリタで動作確認済みShift-Jis環境用BF
ttp://pc3.2ch.net/test/read.cgi/tech/1033143528/546 >+++++[>+++[<<+++++++++++++>>-]<-]
>+++++[>++++[<<+++++++++++>>-]<-]<++>
>++++++[>++++++[<<+++++>>-]<-]<+++>>
>++++[>++++[<<++++++++>>-]<-]<++++>
>++++[>+++++++[<<++++++>>-]<-]<++>
>+++++[<++++++++>-]>+++++[>+++++[<<
++++++++>>-]<-]<+++++>>++++[>++++[<<
++>>-]<-]>+++[<++++>-]<+>++++++++++[
<<<<<<<<<<.>.>.<<---.+++>>>+++++[>.>.<<-]>>>
.<<<<<+.>>>---.+++>>>.<<<<<<.->>>>>+.-
<<<+++++[>.>.<<-]>>>>>
.+>>>+++[<<<.>>>-]<<<->.---.+++>-]
にして、7行スレの奴らはすげーな。
まじめに俺様インタプリタ作ったら400行近くいっちまったよ。
さて、寝るか。
>>98 今のところ思いつくのはBFで書いたUTMの上でコードすることだけだなあ
101 :
デフォルトの名無しさん :02/11/07 04:43
age
どんなにがんばっても 400 行はいかないと思った。。。
なんちうか Forth,Smalltalk,Dylanスレ的なノリになってきますた。
ふーし
>>102 馬鹿みたいに各コマンドのクラスを作って、
実行制御クラス、メモリ管理クラス、
最後に例外クラス作ってたら400超えますた。
なんとなく俺様ランゲージを作る際の基礎が見えたきがすた。
106 :
デフォルトの名無しさん :02/11/11 01:44
関数作れるの?
VRAMとか付けたりメモリマップトI/Oとかつけてみたら面白そうだね
といってみるテスト
>>108
>>107 VRAMをBFのやり方で描いてくのか・・・
面白そうだとは思うけど(^^;
>>107 直接マシンコード叩いてた時代を彷彿とさせますナ。
いや、それよりはるかに手間かかるか(w
ドットの明滅だけに限定するなら、何とかなるかな?
dst,temp,srcが連続している場合の値のコピー(現在のポインタ位置はdst) [-]>[-]>[<+<+>>-]<[>+<-] テンポラリ使っちゃってるんですが なんかもっといい方法ないですか
111 :
デフォルトの名無しさん :02/11/14 16:01
+[[<]+>[+>]<]
113 :
デフォルトの名無しさん :02/11/14 21:13
+[>+,[+.-++]>.<]
>>111 メモリの1番地に書けるのが8ビットとは決まってないから。
115 :
デフォルトの名無しさん :02/11/15 11:26
一瞬で飽きられますた
>>116 うんじゃ雑誌インターフェーススレにでも再利用するかい(w
118 :
デフォルトの名無しさん :02/11/23 12:10
ポインタのアドレスを実行とかあれば萌えだな
だれかBFコンパイラ書いてくれ。BFで。
インタープリタじゃなくてコンパイラを書くのか?
>>120 不可能ではないのでは?(人間に作れるのか不明だが)
標準入力からソース読んで、標準出力に実行形式を吐く。
コンパイラなら、まずプラットフォームを明確に...
>>121 実行ファイルはリダイレクトで保存できる
マシン語で自身の後ろにくっつけたコードを実行する究極まで圧縮した インタープリタ作ってそのコード+入力データを出力するコードを作ればOK。
125 :
デフォルトの名無しさん :02/12/01 21:32
バイナリをBF化するプログラム希望。
>125 Cでスマソ #include<stdio.h> main(void){int c;while(EOF!=(c=getchar()))while(c--)printf(c?"+":"+.>");}
>>119 あった。このスレから逝けるサイトにインタプリタは
++++++++[>++++++++++++++++<-]>++.> ++++++++++++[>++++++++++++++++<-]>++++++++++.> ++++++++[>++++++++++++++++<-]>++.> ++++++++++++++[>++++++++++++++++<-]>+++++++++.> ++++++++[>++++++++++++++++<-]>++.> +++++++++++++[>++++++++++++++++<-]>+++++++++++.> +++++++++++++.---.
>>128 インタプリタ
esoteric.sange.fi/brainfuck/bf-source/prog/BFI.BF
コンパイラ
esoteric.sange.fi/brainfuck/bf-source/prog/BFC.BF
理解不能... コンパイラのプラットフォームは?
そもそも使い方がわからないし…
保守sage
1つの場所にどのくらい大きい数が入るかも決まっていない。
早く内部告発者保護法を制定しろ そうすれば2chの内部告発をした玄さんも保護される
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/ 1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27 鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
記念カキコ
えーい、IPがなんだー!
宮崎はスーパーハカーのお友達がいるからこんなことしなくても関係ないだろ。
しかしなんだねえ、 ホスト情報を記録しろってのは前から何度も言われてたけど、 絶対そうはならないだろうなあ、とか思ってたよ。
記録とるなら串制限撤廃してくれ!
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
とりあえず、
>>13 を校正してみました。
----
>>8 この判決の要旨は、
現状の2ちゃんねるにあっては、
「レスの真実性・相当性」をひろゆきが立証出来ないヤヴァいレスについては、
被害者から公式な削除要請があり次第、片っ端から消しなさい。
そうしないなら、ひろゆきが賠償するってことですよ。
ということです。なんともう~んな判決ですが、ひろゆきの控訴も棄却されてしまいました。
で、まぁ、なんとか、公式削除要請→即削除 の義務を軽減しようとひろゆきが考えた策が、
んじゃ、当事者同士で解決してね!ってことで、IPを教えてみよう! ということになっ
たわけです。
名誉毀損かどうかをひろゆきが判断するのか?
ない
>>448 現在の仕様でもブラウザで閲覧可能ですが
今から風呂を沸かして入る手間と、 今から布団へ潜りこんで寝る快楽を、 天秤にかけるまでもなく眠たいから寝るべきなんだろうけど、 こうして惰性でインターセプトをしているあたり、 そろそろお迎えが近いんだろうなと気付きつつも、なぜ、 わざわざボラさんスレにこんなどうでも良いことを書き込むのだろうかと、 無い脳を内蔵した処理系統からの応答待ちで数分費やしたら煙が出るとか、 そういうファンタスティックでドラマチックな事象に自重を込めたつもり貯金魚を下さい。
いや、そこまでわかったらビックリや。
>>312 キタ━━━━━(゚∀゚)━━━━━!!!!
なんかこれ見よがしに必死に他の掲示板へ誘導してる香具師が居るように見えるんだがw
フシアナをハンドルにしてるハン板の顰蹙コテがいて、 これが2CHにVirus Scriptやらブラクラやらを貼ったことを自慢した揚げ句、 別のコテハンがフシアナして挑発したらポートスキャンを掛け倒したのです。 410 名前: 投稿日:03/01/10 00:08 ID:h/ETIb2F >401 名前:三毛 ◆MowPntKTsQ :03/01/10 00:04 ID:McoZGeeY >ウィルススクリプト貼ってケツまくるような野郎が、「公序良俗」とは笑止の限り。 これが事実だったらどーすんの?(whhh 415 名前:三毛 ◆MowPntKTsQ 投稿日:03/01/10 00:15 ID:McoZGeeY アサピーは、で >あれは、そもそもスクリプトじゃないし単にノートンが糞だって言うだけの話。 などと言い訳をしておりまつ。 ではどーいう意図でああいうものを貼ったのか、内容をご説明頂きたいものですな。 417 名前:g056137.ppp.asahi-net.or.jp 投稿日:03/01/10 00:16 ID:6BZCtvnU そんなに怖かった? で、相手にログとられて晒し上げの上、朝になったらプロバイダにも抗議されてしまう、という。
いや明け方に(略
もう、チョんバレ?
蚊が刺したほどにも感じない ということであろう
>ひろゆき ex2鯖も重いのでどうにかしてほすぃ。
スレタイもうちょっと・・・なんとか・・・ならないんだよね。
漏前は、二度と来るな
記念牡蠣粉
大阪JCネタ
それもどうかと思うけどな(^_^;) やはり「書き込むことに責任あることを認識しろ」かと。 つーか、まもなく6億~
test test
なるわけねーだろ 馬鹿はしねよ
それにしても、奴は朝突っ込むと予告してたのにとられた処置が集団下校とは・・・ もし奴が実行してたら、大事だったんじゃないの?
それってさぁ・・・ ま、いいや キミの脳内はその考えで突き進んでくれよ。 だけどね、そのようにした結果 裁判に負けたんだよ。
ロデム変身、地をかけろ~~~♪
(^^)
あげ。前スレ上がってるよ。
(^^)
>++++++++++++++[<++++++++>-]<+++.>++[<-------->-]<--.++++++.--.
(^^)
176 :
デフォルトの名無しさん :03/01/24 12:48
+++++++++[>++++++++<-]>.<++++[>+++++++<-]>+.+++++++..+++.[-]< ++++[>++++++++<-]>.<+++++++[>++++++++<-]>-.<++++[>++++++<-]>. +++.------.--------.[-]<++++[>++++++++<-]>+. 自分なりに縮めたHello World!
179 :
デフォルトの名無しさん :03/01/31 15:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. +++++++.---.+++.-----.-.
>>179 これぐらいやろうぜ。
++++++++[>++++++++++<-]>--.+++++++.---.+++.-----.-.
00-FFまでを出力するコード ++++++++[>++++++++<-]>[>++++<-]>-[>+.<-]
00-FFまでを出力するコード2 -[>+.<-]
>183 .+[.+]
185 :
デフォルトの名無しさん :03/03/09 00:20
もう終りかね?
SKIインタプリタをだれか作ってくれ。
たまには age てやるか
Cマガに登場age
すっげえ適当に作っても動くんだな。それなりに感動。 #include <stdio.h> #include <string.h> void brainfuck(char *str) { char memory[256]; memset(memory, 0, sizeof(memory)/sizeof(memory[0])); int pointer = 0; char *p = str; while (*p) { switch (*p) { case '>': ++pointer; break; case '<': --pointer; break; case '+': ++memory[pointer]; break; case '-': --memory[pointer]; break; case '.': putchar(memory[pointer]); break; case '[': if (!memory[pointer]) while (*(++p) != ']') ; break; case ']': if (memory[pointer]) while (*(--p) != '[') ; break; } ++p; } } int main() { char *str = " \+++[>++++<-]>[<++++++>-]<.\ >++++++[<+++++>-]<-. +++++++.. +++. >++++[>++++++++<-]>. [>+++<-]>---------. <<<.+++.------.--------."; brainfuck(str); }
>189 >>++++[<++++[<++++>-]>-]<<++++>++[<.---.++++++++++++.--------.->-]
191 :
デフォルトの名無しさん :03/03/27 14:25
++++++++[>++++++++<-]>+.++++++.--.
192 :
デフォルトの名無しさん :03/03/30 11:04
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. ++++++++++++++++++. -----------. +++++++++++++++++. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. ++++++++++++++++++++++++++++++++++++++++. -----------------------------------------------.
これのコンパイラ作ったらどうかな。 インクリメントやジャンプを最適化するだけ。
つーか既にあるのね。
>>130 何やってるのかわけわからんが。
じゃあ、他の言語からBFに変換するトランスレータはどうか。
wikipediaにあるのより短いHello World! ++++[>++++[>++++>++++++>++<<<-]>++>+<<<-]>>.>+.+++++++..+++.>.<<-<++++[>++++<-]>.>.+++.------.--------.>+.
お、自作スクリプト作る予定なんだけど この言語を参考にしよう!
>>197 しまった、最後に改行してない。短くなかった・・(´・ω・`)
これ改行は読み飛ばすんだよね?
++++++++[>++++++++[>++>+++<<-]>>+>---<<<<-]>>++.>++.<.>>+.<<.<++++[>>++++<<-]>>+.
>>197 2文字オーバー...
++++[>++++++++[>++>+++>+<<<-]>++>+>>++<<<<<-]>>.>+.+++++++..+++.>.<<+++++++++++++++.>.+++.------.--------.>+.>++.
関係ないがBrainFuckのケータイ用アプリがあった
unlambdaとどっちがわけわかかな
BrainFuck……脳姦……(・∀・)イイ!!
(・∀・)ヌルポ!!
ガッ
210 :
デフォルトの名無しさん :03/04/01 16:54
@を最小ステップで表示させておくれ。 俺はどうやっても20文字超えるんだけど。
>>210 素直に書いたら
++++++++[>++++++++<-]>.
23文字かかった・・
212 :
デフォルトの名無しさん :03/04/01 18:11
>>210 ----[>+<----]>+.
16文字(笑)
随分長くなってしまったけど、 ヒットアンドブロー。 ,>>>>>>,>>>>>>,>>>>>>,>>>>>>,>+++[>++++<-]>[<++++>-]<[<.>-]<[->, >,>,>,>,<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[>+>+>+>+>+<<<<<-]>[<+>-]>> >>>[>+>+>+>+>+<<<<<-]>[<+>-]>>>>>[>+>+>+>+>+<<<<<-]>[<+>-]>>>>>[ >+>+>+>+>+<<<<<-]>[<+>-]>>>>>>[<<<<<-<<<<<<-<<<<<<-<<<<<<->>>>>> >>>>>>>>>>>>>>>>>-]>[<<<<<-<<<<<<-<<<<<<-<<<<<<->>>>>>>>>>>>>>>> >>>>>>>-]>[<<<<<-<<<<<<-<<<<<<-<<<<<<->>>>>>>>>>>>>>>>>>>>>>>-]> [<<<<<-<<<<<<-<<<<<<-<<<<<<->>>>>>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<< <<<<<<<<<<<<<<<[[-]<->]<+>>[[-]<->]<+>>[[-]<->]<+>>[[-]<->]<+>>> (続く)
>[[-]<->]<+>>[[-]<->]<+>>[[-]<->]<+>>[[-]<->]<+>>>>[[-]<->]<+>>[ [-]<->]<+>>[[-]<->]<+>>[[-]<->]<+>>>>[[-]<->]<+>>[[-]<->]<+>>[[- ]<->]<+>>[[-]<->]<+<[<<<<<<<<<<<<+>>>>>>>>>>>>-]<[<<<<<<+>>>>>>- ]<[<<<<<<+>>>>>>-]<<<[<<<<<<+>>>>>>-]<<<[<<<<<<+>>>>>>-]<<<<<<<< <[>>>>>>+<<<<<<-]<[>>>>>>+<<<<<<-]<[>>>>>>>>>>>>+<<<<<<<<<<<<-]> >>>>>[<<<<<<+>>>>>>-]>>>>>>[<<<<<<+>>>>>>-]>[<<<<<<<<<<<<+>>>>>> >>>>>>-]>>>>>>>[<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>-]<<<<<<<<< <<++++++++[<<<<<<+++++++++>>>>>>-]>>>>>>++++++[<<<<<<+++++++++++ (続く)
>>>>>>-]>>>++++++++++[<++++++++++++>-]<<<<<<<<<<<<<<<<<<<[>>>>.> >[-]>>>>>>+>+<<<<<<<<<<<<<-]>>>>>>[>>>>.>>>+<<<<<<<[-]]>>>>>>>[> >>>>>-<<<<<<[-]]>>>>>>+[<.>-]<<<<<<<<<<<<<<<<<<[>>>.>>>[-]>>>>>+ >>+<<<<<<<<<<<<<-]>>>>>>[>>>.>>>>+<<<<<<<[-]]>>>>>>>[>>>>>-<<<<< [-]]>>>>>+[<.>-]<<<<<<<<<<<<<<<<<[>>.>>>>[-]>>>>+>>>+<<<<<<<<<<< <<-]>>>>>>[>>.>>>>>+<<<<<<<[-]]>>>>>>>[>>>>-<<<<[-]]>>>>+[<.>-]< <<<<<<<<<<<<<<<[>.>>>>>[-]>>>+>>>>+<<<<<<<<<<<<<-]>>>>>>[>.>>>>> >+<<<<<<<[-]]>>>>>>>[>>>-<<<[-]]>>>+[<.>-]<[-]<<<<<<<<<<<<<<[-]> (続く)
>>>>>[-]>>>++++++++++.[-]<----[[-]>-<]>+[>++++++[<+++++++++++>-] <.>++++[<+++++++++++>-]<.-.-------.+++++++++++.----------------- .>++++[<+++++>-]<-.+.---------.-----------.>++++[<+++++>-]<-.--- --------.++++++.-.+++++.>++++++++[<---------->-]<--.>>>>>>>>>>>> -<<<<<<<<<<<[-]]>>>>>>>>>>]>+[[-]<<<<<<<<<<<<<<<<<<<<<<<<<.>>>>> >.>>>>>>.>>>>>>.>>>>>>>] (終わり)
Slashdot-Jにあったオブジェクト指向Brainfuck
http://slashdot.jp/comments.pl?sid=84933&cid=291122 Object Oriented Brainfuck
Language specification:
> Move the iterator to next.
< Move the iterator to previous.
+ Send 'Increment' message to the iterator.
- Send 'Decrement' message to the iterator.
. Send 'Output' message to the iterator.
, Input a byte and send it to the iterator with 'SetByte' message.
[ Jump past the matching ] if the iterator returns 'TRUE' by the sent 'IsZero' message.
] Jump to the matching [.
218 :
デフォルトの名無しさん :03/04/01 18:47
1. 正解の4文字を入力。その後たくさん改行が表示され、答えは流れる。 (スクロールさせないでね) 2. 4文字入力。改行するとヒット(H)/ブロー(B)/はずれ(x)が表示される。 3. 正解すると Congratulations! と表示される。 4. 10回で正解できないと終わり。正解が表示される。
絵で見るBrainFuck tp://up.2chan.net/o/src/1049106992483.jpg
仕事で使うって人いる?
>>222 仕事って……
組み込みには使えるかな!?
入力が5つ続くところの最後の , を +>+[-<,----------[[-]>+<]>]<++++++++++ に変えると、キーバッファクリア。 (二回目のは最後の ++++++++++ は不要) これで少々入力がオーバーしても大丈夫に。 特に、初めに正解を入力するときに 適当にキーを押したので構わなくなるので一人でも遊べる。
225 :
デフォルトの名無しさん :03/04/02 20:31
--[>+>+<<+++++++]>.+++++++.>--..++++.-.
もーいいよ。実用性ゼロだろ。
そもそも実用なんて考える言語じゃない。 パズルみたいに遊ぶための言語だ。 ワーイ。
>>226 この手の言語で実用云々ぬかす奴は低能コーダー
Fuck your brain.
230 :
デフォルトの名無しさん :03/04/03 20:43
新言語 ± +++ Brainf*ck の + に相当 --- Brainf*ck の - に相当 ++- Brainf*ck の > に相当 --+ Brainf*ck の < に相当 +-+ Brainf*ck の , に相当 -+- Brainf*ck の . に相当 +-- Brainf*ck の [ に相当 -++ Brainf*ck の ] に相当 Hello, world! ---+--++-+++++-+++--+--+----------------------++++-----+---++++++++++++++++++++ ++++++++++++--++-+++++++++++------------+--+----++++-----+-++++++++++++++++++++ +-+--+-+++++++++-+-++-+++-+--------------------------------------+---++++++++++ +++++++++++++++-+--------------------------+-+++++++++-+--------------------+-- ------------------------+-++-+++-+-
ワロタ
±派生言語 BitFuck 111 Brainf*ck の + に相当 000 Brainf*ck の - に相当 110 Brainf*ck の > に相当 001 Brainf*ck の < に相当 101 Brainf*ck の , に相当 010 Brainf*ck の . に相当 100 Brainf*ck の [ に相当 011 Brainf*ck の ] に相当 Hello, world! 0001001101111101110010010000000000000000000000111100000100011111111111111111111 1111111111110011011111111111000000000000100100001111000001011111111111111111111 1010010111111111010110111010000000000000000000000000000000000000010001111111111 1111111111111110100000000000000000000000000101111111110100000000000000000000100 00000000000000000000000010110111010
クダラネ
±派生言語 ., ... Brainf*ck の + に相当 ,,, Brainf*ck の , に相当 .., Brainf*ck の > に相当 ,,. Brainf*ck の < に相当 .,. Brainf*ck の , に相当 ,., Brainf*ck の . に相当 .,, Brainf*ck の [ に相当 ,.. Brainf*ck の ] に相当 Hello, world! ,,,.,,..,.....,...,,.,,.,,,,,,,,,,,,,,,,,,,,,,....,,,,,.,,,.................... ............,,..,...........,,,,,,,,,,,,.,,.,,,,....,,,,,.,.................... .,.,,.,.........,.,..,...,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,.......... ...............,.,,,,,,,,,,,,,,,,,,,,,,,,,,.,.........,.,,,,,,,,,,,,,,,,,,,,.,, ,,,,,,,,,,,,,,,,,,,,,,,,.,..,...,.,
モウイイヨ…
>>230 >>232 >>234 >と<、[と]は左右対称にした方がいいと思ふ。
))):+
(((:-
)():,
()(:.
))(:>
)((:<
(():[
()):]
Hello, world!は略
>>237 略すなよ
)))))))))))))))))))))))))))(()))()))))))))))))))))))))))))(((((())))(()()(())))))))))))(()))())))))))))))))))))))))(((((())))()))()()))))))))))))))))))))()(()()))))))))()((()(((()))((
))))))))))))(()))()))))))))))))))))))))))))(((((())))(()()(()))))))))))))))))))))(()))()))))))))))))))))))))))))(((((())))((((()()(())))))))))))(()))()))))))))))))))))))(((((())))(()(
)))))))))()(((((((((((((((((((()(((((((((((((((((((((((((()((()(((()))(())))))))))))(()))()))))))))))))))))))))))))(((((())))()))()(
新言語スペース&タブ 以下略。
ミエネ
241 :
デフォルトの名無しさん :03/04/04 18:43
ぱっと見はAAになってるコード希望。
じゃあCR&LFで
コントロールシーケンスで書いたらバイナリと変わらんやん
そろそろネタ切れだな
±派生言語 MorseFuck ___ Brainf*ck の + に相当 ... Brainf*ck の - に相当 __. Brainf*ck の > に相当 .._ Brainf*ck の < に相当 _._ Brainf*ck の , に相当 ._. Brainf*ck の . に相当 _.. Brainf*ck の [ に相当 .__ Brainf*ck の ] に相当 Hello, world! ..._..__._____.___.._.._......................____....._...____________________ ____________..__.___________............_.._....____....._.____________________ _._.._._________._.__.___._......................................_...__________ _______________._.........................._._________._...................._.. ........................_.__.___._.
±派生言語 JR ━━━ Brainf*ck の + に相当 ─── Brainf*ck の - に相当 ━━─ Brainf*ck の > に相当 ──━ Brainf*ck の < に相当 ━─━ Brainf*ck の , に相当 ─━─ Brainf*ck の . に相当 ━── Brainf*ck の [ に相当 ─━━ Brainf*ck の ] に相当 Hello, world! ───━──━━─━━━━━─━━━──━──━──────────────────────━━━━─────━───━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━──━━─━━━━━━━━━━━────────────━──━────━━━━─────━─━━━━━━━━━━━━━━━━━━━━ ━─━──━─━━━━━━━━━─━─━━─━━━─━──────────────────────────────────────━───━━━━━━━━━━ ━━━━━━━━━━━━━━━─━──────────────────────────━─━━━━━━━━━─━────────────────────━── ────────────────────────━─━━─━━━─━─
>>248 もっとJRに見えるように(出来るだけ交合になるように)しる
>>249 ━─━─ Brainf*ck の + に相当
─━─━ Brainf*ck の - に相当
━━─━ Brainf*ck の > に相当
──━─ Brainf*ck の < に相当
━──━ Brainf*ck の , に相当
─━━─ Brainf*ck の . に相当
━─━━ Brainf*ck の [ に相当
─━── Brainf*ck の ] に相当
Hello, world!
─━─━━─━━━━─━━─━─━━─━━─━───━───━──━─━─━─━
─━─━─━─━─━─━─━─━─━─━─━──━━─━─━─━─━━───━─
━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─
━─━━━━─━━─━─━─━─━─━─━━─━─━─━─━─━─━─━──━─
──━──━─━─━──━━─━─━─━─━━─━─━─━─━─━─━─━─━─
━─━─━─━─━─━──━━──━━─━─━─━─━─━─━──━━─━━─━
━─━──━━──━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━
─━─━─━─━─━─━─━─━─━━───━─━─━─━─━─━─━─━─━─
━─━─━─━─━─━─━─━──━━──━─━─━─━─━─━─━─━─━─━
─━─━─━─━─━─━─━━─━─━─━─━─━─━──━━──━─━─━─━
─━─━─━─━─━─━─━─━─━━──━─━─━─━─━─━─━─━─━─━
─━─━─━─━─━─━─━━─━━─━━─━──━━─
同じネタは3度まで。
寒くなってきたので 終了
(^^)
お題:不動点プログラム@BF(できるかどうか不明
256 :
デフォルトの名無しさん :03/04/19 09:02
∧_∧ ( ^^ )< ぬるぽ(^^)
∧_∧ ( ^^ )< ぬるぽ(^^)
age てみるテスト
ほっしゅ
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
保守
264 :
デフォルトの名無しさん :03/05/31 23:34
携帯のアプリ落としてやってるんですが全く分かりません。 鬱陶しいほど詳しく解説してください。
>>264 とりあえず掛け算だけでも。
3 * 5 : +++[>+++++<-]
以下、ポインタは [ ] で、そうでない部分は ( ) で囲んでます。
バッファ : [0](0)...
↓ +++
バッファ : [3](0)...
↓ >
バッファ : (3)[0]...
↓ +++++
バッファ : (3)[5]...
↓ <
バッファ : [3](5)...
↓ -
バッファ : [2](5)...
↓ 0 ではないのでループ
バッファ : [2](5)...
↓ 以下続ける
バッファ : [0](15)...
↓ 0 なのでループを終える
バッファ : [0](15)...
ループカウンタをオーバーフローさせて 多めにループする荒技もあります。 --[>+>+<<+++++++]>.+++++++.>--..++++.-.
267 :
デフォルトの名無しさん :03/06/14 00:57
2バイト文字表示は無理なのか?
なんか昔のTTLみたいだな ... 。 つーか、アセンブリ言語の読みづらい版って感じ。
ニモニックのはしょられたアセンブリ言語って、デバッグしたくない.....。
>>267 1 バイト = 16 ビットのメモリモデルを持てば可能だろうね。
2 バイト文字だとリーダー/トレーラが分かれるからいやらしい。
271 :
デフォルトの名無しさん :03/06/14 01:14
> 1 バイト = 16 ビットのメモリモデル ワードって読んだらだめでつか。(言いたい事はわかるけど)
272 :
デフォルトの名無しさん :03/06/14 01:17
プログラム全体をでっかいループで囲えばサブルーチン呼び出しなんとかできるんじゃ? むずそうだけど・・・
>>271 最近はビット/バイトは知っててもワードが通じない人が増えてきたからなぁ
なんかめずらしく良スレだ
>>273 ニブルとかオクテットとかもあるよね。
あと、BCD。
1バイト=9ビットなんて環境もあるらしいので 通信は普通オクテット使うよな
これでCPUのシミュレータ作って、 そのシミュレータ用のコード吐くコンパイラ作って(C言語とか)、 そのコンパイラでそのコンパイラ自体をコンパイルして、 BFでC言語を実行できるように! ↑やったやつ神
>>277 シミュレータ設計した時点で、他の部分も見えてると思われ。
ただしその行動力を阻害する要因があるとしたら、それは要するに
烈しくめんどくさいという事だったりするという....。
シミュレータとエミュレータってどう違うの?
>>279 シミュレータはなんかシミュレーションするやつで
エミュレータはただでゲームができるやつのことだろ。
282 :
デフォルトの名無しさん :03/06/14 02:15
こんな時間まで起きて何話してんだよわらた
>>279 マジレスすると、中身までそっくり真似るのがシミュレータ。
見た目だけ真似て中身は別物なのがエミュレータ。
つまり277はエミュレータって言ったほうがよかったのか
>>283 ユーザの見えない部分まで全く同じにつくったものがシミュレータで、
内部を自由につくったり実機にはない機能を付け加えたりしたものがエミュレータということ?
>>279 マジレスすると、白人が真似るエリザベステイラーはシミュレータ。
顔と肌を真似てもDNAに邪魔されるマイケルはエミュレータ。
>>285 そです。
でも突き詰めて考えると境界は曖昧なんだけど。
シミュレータ=なるべく似せるが、本物と置き換わることはできない(例・自動車や航空機操縦) エミュレータ=(ある部分において)本物にとってかわることができるもの
age
新人にコンピュータ・リテラシーの基礎を教えるには良い教材ではないかと。
ああ、楽しい
>>292 広辞苑(第五版)の記述を書いてあげるから、これ読んで出直してね。
シミュレーション
物理的・生態的・社会的等のシステムの挙動を、これとほぼ同じ法則に
支配される他のシステムまたはコンピュータの挙動によって、模擬すること。
エミュレーション
コンピュータシステムの全部または一部を、別種のハードウェアや
ソフトウェアで擬似的に動作させること。
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
295 :
BearHand ◆hHJQnHs7BM :03/07/28 18:31
あげ おもしろい
296 :
BearHand ◆hHJQnHs7BM :03/07/31 19:49
あげ おもしろい
シュミレータとシミュレータってどう違うの?
シュミレータ=趣味で作った手抜きのシミュレータ
(^^)
300 :
デフォルトの名無しさん :03/08/05 20:23
age
301 :
デフォルトの名無しさん :03/08/11 18:53
あげ
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
このスレは削除依頼済です
304 :
デフォルトの名無しさん :03/08/18 18:57
なんでやねん!
305 :
デフォルトの名無しさん :03/08/18 20:56
306 :
デフォルトの名無しさん :03/08/21 11:43
シミュレーションは、あらゆるシステムに対して、紙と鉛筆で行うことが出来るが、 エミュレーションは、紙と鉛筆で出来たシステム以外には、紙と鉛筆で行うことはできない。
BrainFuck で CGI スクリプトを書いてみるテスト。
>>230 位からの BrainF*ck もどきはケンシロウ進数でも表出出来るね。
HelloWorld は略。
309 :
デフォルトの名無しさん :03/09/27 09:21
ケンシロウ進数?
BrainFuckはどうだか知らんが230以降の複数で1つの命令って考えはDNAにも通じるし、うまく並べりゃ進化始めるんでない?
>>309 よく分からんけど
あたたあたたああたたたたあたあああたたた
って事でないかい?
312 :
デフォルトの名無しさん :03/09/27 14:30
コンパイラってどうやって使うんですか
>>312 せめて誰に向けていったのか、はっきりしてくれないと・・・
すいません。上げます。
このスレの
>>7 にあったサイトからおそらくDelphiで作られたbrainfuckを落としました。
そのなかの「Bf」ディレクトリにサンプルが幾つか入っているのですが
その中の「Bfc.bf」を覗いてみると一行目に「BF compiler written in BF」
と記述されています。
これの使い方が分かる人はいませんか?
>>314 場違いでスマンが笑いがとまらねー。
やっと "Hello World!" の表示に成功したところなもんで、
これでコンパイラ作ったのかよと思ったら笑えてきた。
演算子が少ないから、子供にやらせるにはいいかもしれなー。 ただ、名前があれだなー。 脳コネあたりが妥当なのだろうか?? あと、 2ヶ月以上前にズームイン・・・。 シミュレータ:対象を予想するもの。 エミュレータ:対象をまねするもの。
演算子が少ないぶん、複雑怪奇な組み合わせかたを憶えないといけない気が… 計算機の仕組みとかの説明にはいいけど、実際に遊ぶなら BASIC とかのほうが楽そう。 Hello World でも大変だから、わかりにくそうだし…
dat落ちしませんように
hoshhhh
321 :
デフォルトの名無しさん :03/12/05 20:07
良スレ あげ
322 :
デフォルトの名無しさん :03/12/05 20:59
323 :
デフォルトの名無しさん :03/12/12 19:05
age
324 :
デフォルトの名無しさん :03/12/20 02:41
自分自身を出力するBFプログラムは既出?
327 :
デフォルトの名無しさん :04/01/22 22:47
:-)
BFを動かすマシンを作りたい。 色々想像してきたがBFマシンの内部にもマイクロコードが在るのではないか? そのマイクロコードもBFなのではないか? もちろんハードワイアードで設計でも可能だろうが実際に作成するときに 部品数が多く面倒になる。 そこで、BFマシン=BFプロセッサー(BFP)のIOをμBFで実装することを考えた。 μBFが思いついた時点でμBFでBFを作る必要はないことに気づいた。 なぜならコード次第でどんなプロセッサーの真似もできるのだから。 μBFは外部IOの制御に特化したものなので、簡略化されている部分がある。 まず、BFでのメモリーのワード幅が1bitになる。これは+-がフリップと同じになる。 次に.,がない。拡張としてあってもいいがそれは出力、入力という意味ではない。 .,を付けることはμBFの中にレジスターかスタックがあるということになる。 では><+[]しかないμBFはどのように実装されるのか?
ふむ、[]の対応は正確なネストができない。 もっとも近いものに対応してしまう。
単純でありながら高度な処理が(手間と時間をかけて)行えるBF 現在より文明が劣る古代の世界においてもBFのような仕組みは作れたのではないだろうか。 さらに超古代、平行世界における超文明も高度な知性によりBFの仕組みを用いるかもしれない。 だとすれば、そのBFマシン(BFM)はどのような形、仕組みで動くものなのか? BFのメモリー部をチベットのマニ車のようなものにすれば、多値の表現が機械的にできる。 BFのコードは単純なため、事前に書かれたコードに従い奴隷に命令し結果を導くこともできただろう。
すでにいくつかでているが、自力で作ったhello, wold ++++++[>++++[>++++<-]<-]>>++++++++.---.+++++++..+++. >+++[>++++[>++++<-]<-]>>----.------------. >+++++++[>++++[>++++<-]<-]>>+++++++.--------.+++.------.--------.
MOVE >[-]<[>+<-] COPY >[-]>[-]<<[>+>+<<-]>>[<<+>>-] 移動先、コピー先を0に初期化する。 COPYはテンポラリーを確保して元値を復元する。
++++++[>++++[>++++<-]<-]>>++++++++[>+>+>+>+>+<<<<<-] >>--->++++>++++>+++++++ <[<]>[.>] 事前にメモリーにhelloを作成してから出力する。null終端。
お、試してみたいと思ったら良いのがあるじゃねぇか。
>>206 はネ申だ!
ageたら人がきたか。 335さんも立派なBFerになってくださいな。
繰り上がり +[>->]<+< ,.> ,.< [>[+[>->]<+>]<<<-] >.>. ポインターを値0のところへ移動させればループを一発で抜けられる。 これでifを構成できる。抜けた後ポインターを適切に戻すこと。
1byte * 1byte = 2byte
,.>
,.
<
[>
[>+<-]>
[>
+>+<[[->>+<<]>-<]>>[<<+>>-]<<
<<+>>
<-]
<<-]
>>>.>.
>>337 の繰り上がりはまちがい。
この掛け算はうまく動くはず…現在試し中。終わる気配ナシ。
結果:wwQ7(成功) ファァァァァァック!!
>>343 ダイナマーイツッ!
利便性のためエコーするようになってるのかな?
実行メモリーの様子がリアルタイムでわかればなあ。あとスローモード。
ココから先は統合開発環境が欲しいところ…。
あと高速なインタプリタ。アセンブラで作ろうかな・・・。
(ブレイン) (フ*** ) )::::::::( ):::::::( /::::::::::::;\ /::::::::::::; \ // |:::::::::::: l | //´|:::::::::::: l | | | .|:::::::::::: | | | | |:::::::::::: | | | | /::::::::::::/| | // /::::::::::::/| | U |::::::::::/ U U |::::::::::/ | | |::::||:::| | | | | |::::||:::| U |::::||::| | ∧∧// |::::||::| | / | | ( ゜д゜ )/ | /. | | // | | |BAR / // | | // | | | /| | // | | // | | // | | // | | U U U U U U
CPU 設計するのもこういう感じなのかなぁ。 よく分からんのやけども。
Return RURIKO-san of mine. It can return. leaf which was not described even to the scene MURIYARI while only the picture taught H scene with Ayaka is 逝って means! Although he wants to be crowded, to carry out good of PA since pant voice was ECHI, and to call it ...., having not added H scene of すばる which is DCE cannot be allowed. leaf Tokyo 逝って means. leaf which did not put in H of the SUFI level 1 although K-mayued-H must also have been possible like Alice at 力技 is 逝って means violently! leaf which did not write a female doctor's H scene after a temple did not describe conscientiously the scene which commits moon cost is 逝って means! ARURUU violated by the enemy by BAD and the course, or something should have put in. Although the scenario was good, it is a complaint say UTAWARE delicately. leaf Tokyo -- more -- GAMBARE Routes which embarrassment could be strangely seen on H scene, and did not put in the 輪姦 insult by enemies, such as LISA, after being a quick pace is 逝って means. The former tac staff who abandoned the efforts which can omit only that from 次作 completely to はっちゃけてくれた's by Moon. is already 逝ってるぽいけど逝って means. 麻枝 (っぽい) with which Nagamori's rape was made to finish it as attempted is 逝って means! やたら [ the contents ] although ANARU insult of まひる is cut and the bottom of inclusion of it on an amusement disk is good -- it was short Active は逝って means! This petition continues until a maker understands the anger at the time of rain check くらった with a CHIMPO grip bundle.
hosssssssssh
保守sage なんというか、すごい夢のある言語だよな。 わくわくしてくる
355 :
デフォルトの名無しさん :04/03/21 21:45
(´Д`)ハァハァ、加算処理つくってみた…既出ですか? 便宜上コメント入れてますが、やっぱり邪道ですか?w ,>,< //入力→(0,1) [>>+>>+<<<<-]>[>>+>>+<<<<-] //移動(0,1)→(2,3),(4,5) > [<<+>>-]>[<<+>>-] //移動(2,3)→(0,1) > [>>+<<-]>[>+<-]>. //加算(4,5)→(6)
お前さんがやりたいのはこういうことか…? ,>,[-<+>]<.
考えてみたら元の値を破壊しない処理か 酒回ってるもんでゴミレススマソ
358 :
デフォルトの名無しさん :04/03/23 15:04
gets()作ってみますた。Enter押すと入力終了。 >+[<,>[-]<[>+>+<<-]>[<+>-]>----------]
ブレインファッカー達が増えていることをうれしく思う。 コメントはないとcoolだが、ないと未来の自分が理解できなくなる。 後輩たちのためにも、手取り足取り解説することは推奨される。 それはまるでBFのポインターの動作のごとく! ファァァァァァック!!
test
361 :
デフォルトの名無しさん :04/04/23 16:36
VisualBrainFuck.NETつくって!
BrainFuckでGUI作ったら神!!!
Apacheモジュールにmod_brainfuckキボンヌ
アク禁はきえたかなぁ
りょうすれ
入力した文字列をechoするだけのをつくってみますた ++++++++>,<[>------<-]++++++++++.---------->[[>] , [<]>-]<++++++++++.>>[.>] (最初に文字数入力)
改良版 >>+[<,>[-]<[>+>+<<-]>[<+>-]>----------]<<[-]<[<]>[.>]
!
!!
!!!
コンパイラ作ろうか?MS-DOSのCOM形式の出力で。 .NET Framework(Win/BSD/Linux)で書こうと思ってるが?
頑張って
できたcomがうまいこと動かんのはWin2kのせいか?
なぜだろう? どういう内容のプログラムを書いた?
スマソ。 <と>の変換を逆にしてた。道理で動かないわけだ・・・ という訳で修正版。375と同じURLにおいたから。
SourceFourgeを下らんことに使うなよ、と。
ナゼに自分のサイトなりあぷろだなりにあげないでsourcefourge使うのか・・・ おまいのプロジェクトだからって何うpしてもいいわけじゃないだろ。
なぜか画面に文字が表示されないな…
リダイレクトでファイルに出力送って覗けば確かに書いてあるのだが
>>379-380 目くじら立てるほどのことでもないだろ
","は出力の機能はない。 あと、こっちでは(たとえば343,358,368,369の)プログラムでは正しく表示されたから、 環境による差があるのかもしれない。 念のためにソースをあげてみてくれ。
なんか知らんがもっかいプロンプト開き直して試したら今度は普通に表示されたわスマソ あとGJ
hakobakoとかnyとか色々あるゾ
BF のコードが明和電機の延長コードに見えてしかたがないのは疲れている証拠か…
<html><script> function trans(ch){ switch(ch){ case '[': return 'while(mem[ptr] != 0){'; case ']': return '}'; case '+': return 'mem[ptr]+=1'; case '-': return 'mem[ptr]-=1'; case '>': return 'ptr+=1'; case '<': return 'ptr-=1'; case '.': return 'buf += String.fromCharCode(mem[ptr])'; case ',': return '/*??????*/'; default : return ''; } } function bf_eval(form, val) { source = val.value; str = 'N=100;mem=new Array(N);for(i=0;i<N;i++){mem[i]=0;}ptr=0;buf="";'; chars = source.split(""); for(i=0;i<chars.length;i++)str += trans(chars[i]) + ";\n"; eval(str+";form.qux.value=buf"); } </script> <form name="f"><input type="text" name="baz" onChange="bf_eval(this.form,this)"><br> <input type="text" name="qux"><br></form></html>
javascriptの事良く知らないけど、こういうの見てるとやっぱりスクリプト言語は偉大だと思うよ。
391 :
デフォルトの名無しさん :04/07/05 18:31
hage
>>392 さんざんOS板で叩かれてるよ、と
ReactOSと紛らわしいよ、と
394 :
デフォルトの名無しさん :04/07/06 03:09
0~6までの数字の組み合わせ3つのH&B攻略ツールを作ってください
n n-1 ... 2 1の総和。n=4。 s/(.)(\d+)/$1 x $2/ge >>+4[[->+> +<<]>>[-<< +>>]<-]<[- <[<]<+>>[> ]<]<+97.
397 :
デフォルトの名無しさん :04/07/10 14:24
>>394 英語分からん
面白そうではある(関数型言語イイ!!)けどスレ違い。
ゲテモノ言語スレでも作るか?
398 :
デフォルトの名無しさん :04/07/15 13:23
BrainFuck自体で記述された処理系キボン
399 :
デフォルトの名無しさん :04/07/15 13:42
こう言う問題が出ました。↓ 指定した年のカレンダーを作成するプログラムを、複数の関数に分けて作成する。下記の問いに答えよ。 第1問 指定された年月をもとに一ケ月分のカレンダーをプリントアウトする関数calout(n,g)を作成する。だだし関数calout(n,g)は以下の条件を満たすものとせよ *カレンダーの曜日の出力は下記のように2週間分を続けて表示する 日 月 火 水 木 金 土 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ・・・・・・・・・・・・・・・・・・・ *calout(n,g)の引数はn:年、g:月 とする。戻り値はなし。 *指定月gの日数は関数days(n,g)で求めるものとする。関数days(n,g)は第2問で自作する。 *指定した年n、月g、日hの曜日はツェラーの公式に基ずく関数youbi(n,g,h)で求めるものとする。関数youbi(n,g,h)のソースファイルは下記のものを利用せよ int youbi(y,m,d) /*ツェラーの公式*/ in t y,m,d; { if(m>2) m=m-2; else{ y=y-1; m=m+10;} return ((y+y/4-y/100+y/400+(int)(2.6*m-0.195)+d)%7); } どうやればいいのかさっぱりわかりません。 誰か解いてくれる方いませんか? よろしくお願いしますm(__)m
ソースコードを負のインデックス値に逆順に配置したら 自分自身を書き換えて実行できるんじゃないの。
401 :
デフォルトの名無しさん :04/07/15 17:00
402 :
デフォルトの名無しさん :04/07/19 03:22
BrainFuck!!!!
403 :
とむ ◆TOM/oiT7jE :04/07/19 03:43
>+ [ +++++++++++++>,. ------------- ] < [.<] 入力したのを逆さにして表示するやつです 改行で入力終了 最後にゴミがついちゃうけど・・・ 解決できない! 誰かしてください。 あと改行押したときの , の結果が13じゃない環境では動きません
404 :
とむ ◆TOM/oiT7jE :04/07/19 03:48
>+ [ +++++++++++++>,. ------------- ] <-------------- [++++++++++++++.<--------------] ウンコしたら解決法思いつきました。
405 :
デフォルトの名無しさん :04/07/19 06:30
406 :
とむ ◆TOM/oiT7jE :04/07/20 03:39
もう書いてる人いないの?
407 :
デフォルトの名無しさん :04/07/21 23:23
文字表示と単純な計算(一桁かける一桁) くらいしか俺の根気だと作れないから何もしない。
>>9 MIUよりは役に立つだろ。せめてTNTと言ってくれ。
>>407 BFを言語だと思って処理するからだよ、単細胞なCPUだと思えばいとたのし。
なんか一週間に一回ぐらい「BFやりてー」って感じるんだよなぁ。 で、しばらくやってると「あ! ほかにやることあるんだった」って気付く。
C2BFこっそり使ったら神になれるな
bfで作ったら神
>>409 PICから毛を抜いたものだと思うようになった。
毛は大事だとおもった。
414 :
デフォルトの名無しさん :04/08/27 14:26
++++++++++[>++++++<-]>+++++.<++++++[>++++++<-]>++.--.
+++++[>+++++[>++++++++<-]<-]>>-.<+++[>++++++<-]>.<+++[>----<-]>+.<++++[>++++<-]>+.
自分自身と同一のソースコードを出力するソースって書ける?
>>415 0xC7 0xD9 0xCE 0xDF ??
BrainfuckでAscii以外出力されても読みにくいよ。
>>419 コード表見てないが、文字感の離れ具合から推察するにヌルポだな
↓今、誰かがガッを書いてますので、しばしお待ちを。
BFIの出力画面をメモ帳にコピペすれば読めるよ
書くのはたやすいが読むのが鬱だなコレ
あと足し算機できた。2桁はだめ。答えが2桁になってもだめ。 だめだめです。 >,.>++++++[<------->-]<------[<+>-] >++++++[>+++++++<-]>+. >,.>++++++[<------->-]<------[<<<<+>>>>-] >+++++++++[>++++++<-]>+++++++. <<<<<<>++++++[<+++++++>-]<++++++.
426 :
デフォルトの名無しさん :04/09/20 15:24:20
あげるよ
427 :
デフォルトの名無しさん :04/09/21 11:16:10
BFで2chブラジャー作って
>>427 ++++[>++++++++++<-]>++++.
++++++++++++++++++.
------------------.
新言語 neko mimi Fu**♥ ・1レス内に全命令のリファレンスが入る素敵な言語。 ネコミミ! ポインタをインクリメント ネコミミモード ポインタをデクリメント おにいさま ポインタが示すメモリ位置のデータをインクリメント 私のしもべー ポインタが示すメモリ位置のデータをデクリメント や・く・そ・く・よ ポインタが示すメモリ位置のデータを出力 フルフルフルムーン ポインタが示すメモリ位置のデータに入力 キスキス… ポインタが示すメモリ位置のデータがヌルなら対応する キス…したくなっちゃった… までジャンプ キス…したくなっちゃった… ポインタが示すメモリ位置のデータがヌルじゃないなら対応する キスキス… までジャンプ
例:Hello world おにいさまおにいさまおにいさまおにいさまキスキス…ネコミミ!おにいさまおにいさま おにいさまおにいさまキスキス…ネコミミ!おにいさまおにいさまおにいさまおにいさま ネコミミ!おにいさまおにいさまおにいさまおにいさまおにいさまおにいさまネコミミ! おにいさまおにいさまネコミミモードネコミミモードネコミミモード私のしもべー キス…したくなっちゃった…ネコミミ!おにいさまおにいさまネコミミ!おにいさま ネコミミモードネコミミモードネコミミモード私のしもべーキス…したくなっちゃった… ネコミミ!ネコミミ!や・く・そ・く・よネコミミ!おにいさまや・く・そ・く・よ おにいさまおにいさまおにいさまおにいさまおにいさまおにいさまおにいさま や・く・そ・く・よや・く・そ・く・よおにいさまおにいさまおにいさまや・く・そ・く・よ ネコミミ!や・く・そ・く・よネコミミモードネコミミモード私のしもべーネコミミモード おにいさまおにいさまおにいさまおにいさまキスキス…ネコミミ!おにいさまおにいさま おにいさまおにいさまネコミミモード私のしもべーキス…したくなっちゃった…ネコミミ! や・く・そ・く・よネコミミ!や・く・そ・く・よおにいさまおにいさまおにいさま や・く・そ・く・よ私のしもべー私のしもべー私のしもべー私のしもべー私のしもべー 私のしもべーや・く・そ・く・よ私のしもべー私のしもべー私のしもべー私のしもべー 私のしもべー私のしもべー私のしもべー私のしもべーや・く・そ・く・よネコミミ! おにいさまや・く・そ・く・よ
ある意味すげえ……
ワラタ
neko mimi fuckインタプリタまだ?
434 :
デフォルトの名無しさん :04/10/15 13:16:09
>>430 GJ!!
いろいろ置換してみると面白そうだなw
437 :
デフォルトの名無しさん :04/10/16 07:14:16
test
理論系の感覚としては0を'-'するとあくまでも-1であって、255と同一視するのには抵抗があるなぁ。 反対にメモリは基準点から対称に広がっている感覚なので、いきなり'<'するのには抵抗ない。 あと、文字コードに無条件でASCIIを使っているのも... 自己書き換えがらみを論じる場合は"><+-.,[]"に小さい数字を与えた方がコードが小さくなるはずだし、負数も含めた文字コードなんてもあっても良いと思う。
441 :
デフォルトの名無しさん :04/10/20 15:38:12
ガロア体
広い目で見るとFORTHの末裔だね
443 :
デフォルトの名無しさん :04/10/20 21:33:24
なるほどな
フィボナッチ数を再帰的に計算するプログラムを考えたのですが、調べているうちに 「原始帰納的関数はloopだけで計算可能」 というのがありました。 ということは、帰納的関数だけども原始帰納的関数でないアッカーマン関数はBrainf*ckでは 計算不可能ということで良いのかな?
つーか関数作れればいいんだよ 関数作れないなら何もできないと思っていい
BrainFuck で書いたプログラムで任意の Turing Machine を エミュレートできるから、どの帰納的関数も定義できる。 もちろん Ackermann 関数も。
>>424 すまんね、パーティションごと逝かれてしまったよ。ただいま復旧作業中だが tool-ya.ddo.jp のサイトは
完全にお遊び用だったからバックアップも取ってなかったし、ただいまあちこちのマシンから発掘作業中。
しかし件のアプレットのソースはまだ見つかってない…
あーマジでないっぽいっす。archive.org にも転がってなかったし、誰か ダウンロードしてる人居たらどっかのアップローダーか postmaster@tool-ya.ddo.ジェーピー まで送ってください。
とりあえず、俺にはまだ
>>10 の動きが、
同じならカッコ内ではなく、違ってればカッコ内としか読めない。
解説キボンヌ。
ディスク増設のためにテープに取ったバックアップ中にはっけーん。
まだ復旧作業が残ってるので再開はもうしばらくお待ちください。
ところで , の文字入力は BrainFuck の仕様的にエコーバックなしなのかね?
>>1 しか読んでないんで作るときに迷ったんだけど、大抵の処理系はエコー
バックすんのが標準かと思ってそうしたんだが (Java とか ANSI C の
getchar() とか/仕様的にエコーバックについては言及されていないと思うが
事実上ね)。
とりあえずチェックボックスとかで選べるようにすればいいんでない
>>450 乙です
復帰したらまた遊ばせてもらいます。
乙
++++[>>++++++++<<-]++[>>>+++++<<<-]++++++++[>+++++++++++<-]>-.<++++[>++++<-]>+.- ------.<++++[>+++++<-]>-.>.<<++++[>----<-]>-.++++++++++++.--.--------.++++++++++ ++++.>.<-----.---------.<++++[>+++++<-]>-.----.>.<-----------.+++++.>.<++++++.-- ----------.---.>.<++++++++++++++.--------------.++++++++++++.++++.<++++[>----<-] >.+++++++++.-----------.++.<++++++[>------<-]>--.>>.<<------.>>.<<------.++++++. ---.+++.>>.<<-------.+++++++..-------.+++++++.>>.<<--------.++++++++...------.++ ++++.---.>>.<<----.+++++++..--.----.++++++..---.+++.>>.<<-------.+++++++.------- --.+++++++++.--------.++++++++...---.+++.>>.<<--------.++++++++.-------.+++++++.. ----.++++...-------.+++++++.>>.<<.---------.+++++++++...----.++.++...---.+++.
デフォルトでエコーバックしないようにしてみた。あと文字入力モードに入ったときに 多少分かりやすくなったか。全角の扱いに関してはまた今度。 履歴見たら最初に作ってからもう2年も経ってんだな。俺も三十路に入ったよ…
コードに改行が入ってると実行したときにコードのカーソルと上2つの表示がずれてきます
お、ホントだ。
誰か任意 の入力二つに対して 割り算を行うプログラムを 作ってください。 破錠シマスタ
460 :
デフォルトの名無しさん :04/11/22 21:48:38
>>459 -----.+++++++.>>.<<--------.++++++++...------.++
++++.---.>>.<<----.+++++++..--.----.++++++..---.+++.>>.<<-------.+++++++.-------
--.+++++++++.--------.++++++++...---.+++.>
BrainFu**って一見チューリングマシンそのものっぽいけど, 実はけっこう違うよな.なんつーか,本当によく考えてある.
エニグマ暗号機に似てるとオモタ
ステップ実行のカーソル位置ずれより先に国際文字出力に対応したザンス。 Shift_JIS でも UTF-8 でも文字出力可能 (になってる事を望む…)。
ちなみにこれマルチバイト文字の入力はどうすんだろ。メモリモデル 1Byte = 16bit にして Unicode 入力にでもしなきゃ「今の位置に 一文字読み込む」とかいう動作は無理だで。相変わらず毛唐どもは てめぇの事しか考えてねぇな。
BraI18Nfuck
チューリングマシンとBrainFuckの大きな違いって何?
あああああああ・・・・テスト近づいてるのに・・・・ BrainFuckが・・・・
>>468 気持ちは解るが試験を優先しろ。(BrainFuckが楽しい場合)
気持ちは解るが頭を整理しろ。(BrainがFuckな場合)
いや、
>>468 は試験にBrainFuckが出るので焦っているのではないか?
>>470 YTなら知っているがUTと言うのは初めてな位「まさか」だよ~
[勇気] [勇気][勇気] [勇気][勇気][勇気][勇気] 生産が [勇気][勇気][勇気][勇気] 追いつかないよ .[勇気][勇気][勇気][勇気] ∧__∧ [勇気][勇気][勇気][勇気][勇気] ( ´・ω・) [勇気][勇気][勇気][勇気][勇気] /ヽ○==○ [勇気][勇気][勇気][勇気][勇気] / ||_ | [勇気][勇気][勇気][勇気][勇気][勇気] し' ̄(_)) ̄(_)) ̄(_)) ̄(_)) ̄(_)) ̄(_)) ̄(_)) ̄(_)) ̄
>>468 = テスト開始まじかだがまだプログラムが完成してない BF コーダー
名前消し忘れた… '`,、('∀`) '`,、
誰かBrainFuckで動くCPUとか作って売らないかなあ。
CからBrainfuckコードを吐くコンパイラとかないかなあ。
>>475 BrainFuck でエミュレータかあ
# と、揚げ足取り
>>477 うわ、「で」→「が」を素で脳内変換して読んでた、
今#を読んでワロタ
( ゚Д゚) ( ゚Д゚)! (;゚Д゚)・・・ (;;゚Д゚)そういえば乱数使えな・・・
>>479 言い出しっぺの法則ということで、疑似乱数発生器はおまかせしてよろしいでしょうか?
誰かBrainFuckを出力するCコンパイラ作ってくれないかな。 #本末転倒だけどw
条件分岐がうまく実現できればC→Brainfuckも夢ではない
BrainFuckのプログラムって普通に書いたら 再入可能・再配置可能・再使用可能のどれにも該当しないよなあ。
あ、再配置は可能か。初期状態でポインタの位置がずれてればいいのか。
>>479 大丈夫。優秀な乱数発生器を作ればいい
時計とか取れるようにシステム変数みたいな領域が
どこかにあればいいよね
擬似乱数のようにアルゴリズムでごまかせるものは良いが、 シードに使う現在時刻とかは無理だな。毎回入力してもらうか。
起動時にメモリがゼロクリアされてなければいいんじゃない。
POSIX API が(ry
BFでゼロクリアされてないって大変マンドクサイぞ
[-] でよくね?
>時間取得のシステム領域 そろそろ架空CPUを妄想してもいい頃なんじゃないの。 てか、ここででっち上げてデファクトスタンダードにしちまおう。
LIFE GAMEのグライダー発生器でプログラミングネタをふと思い出した。
RLE圧縮してもいいですか?
マイコンとロジックゲートを使わずにBrainFuckが走る まぁチューリングマシンみたいなもんって作品例ってありますか? はーどな話で須磨祖
初めてダウソしました。最高! なんか自分がPCの中枢に触れてるような気になれるぐらいΣd(・ω・´)イイ!!!
>>498 じゃ次はWhiteSpaceにチャレンジだ
500 :
デフォルトの名無しさん :04/12/26 16:37:09
INTERCAL の読み物はないかぇ?
501 :
デフォルトの名無しさん :04/12/27 13:19:58
即値代入ってできないんですか?
>>501 できません、もりもりインクリメントしてください。
#include <stdio.h> int main(){ int i,num; FILE *fp; printf("値?"); scanf("%d",&num); if(fp = fopen("out.txt","w")){ for (i=0;i<num;i++) fprintf(fp,"+"); fclose(fp); } }
暇なんで2chネラー向きのBrainFuckのネイティブコンパイラつーのを 作ってみるわ。もちろんWindowsネイティブな。PEフォーマット調べることから始めるからかなりまちなー。
ワラタ。まあがんばれ。
”奉仕の会”の本買えなかった…orz
問題なく使えるね。
マクロ定義して高級言語化できるようにしてくれ
BrainFuckにBrainをFuckされたんですが 訴えることは可能ですか?
>511 ワカンネェ。
Fuck されたBrainでBrainFuckをHackすることはできます。
誰か今までに発見された移動とか値コピーとかのまとめ作ってくれないか。 wikiとかで。
いやー、BrainFuckはええね。 パーサがswitch1つで出来ちゃったよ・・・
()だけのパーサ?
機械語のほうが高級じゃない?
何をもって高級というのか
これが役に立つ日は来るのか・・・
何かに応用するとか、役立つかどうかは分からないけど、 初心者に高級言語教える前にこれやった方が、覚えが早くなるんじゃないか。
カレントディレクトリの*.bfを監視して変更されたものを自動的に実行するバッチファイル for WinXP @echo off if "%1"=="brainfucking" goto loop cmd /c %0 brainfucking 2>&1 | %systemroot%\system32\find /v "ファイルが見つかりません" goto eof :loop for /f "usebackq delims=" %%f in (`dir *.bf /a:a /b`) do ( echo exec %%f bf %%f || echo error attrib %%f -a echo. ) ping localhost -n 2 >NUL goto loop :eof
コンパイラ自体は即日で出来たけど(当たり前か...) リンカができない。 Win32のフォーマットじゃないって怒られた。 見直し。鬱打氏脳。
これって0を-したらどうなるの?
00を-したらFFになるが 0を-したらどうなるんだかスラッシュになるんだべか
いろいろ試すならGUIよりも拡張命令追加したほうが楽だよ。 # コメント "コメントをstderrに出力" * # メモリとポインタをリセット ? # メモリをダンプ @ # 一命令を実行するごとにメモリをダンプのトグル
そんなんbrainfuckじゃないやい!とネットの片隅で叫ぶテスト
532 :
デフォルトの名無しさん :05/02/06 20:14:59
あげりゃレスも増えるだろう
533 :
デフォルトの名無しさん :05/02/06 21:37:42
取り敢えず自分の名前を表示するコードを作ってみた。 これ楽しいわ。
languageが回文になっていればacceptしそうでなければrejectするプログラムを書け。 00100100→accept 01101000→reject
535 :
デフォルトの名無しさん :05/02/08 15:11:39
>>534 8文字限定。きっともっと短く出来る
,>,>,>,> > > >,<,<,<,<<<<[-> > > >-<<<<]>[-> > > >-<<<<]>[-> > > >-<<<<]>[-> >
> >-<<<<]>[[-]<<<<+> > > >]>[[-]<<<<<+> > > > >]>[[-]<<<<<<+> > > > > >]>[[-]
<<<<<<<+> > > > > > >]<<<<<<<[[-]>+>++++++[>+++++++++++++++++++<-]>.----------
---.+++++.-----.--.<++++[>++++<-]>+.<<<]>-[>++++++++[>++++++++++++<-]>+.++..++
.+++++++++++.++++.<]
>>が多すぎるって怒られたorz
,>,>,>,>,>,>,>,> >+> > > >++++++[<++++[<+++++<++++> >-]>-]<<-------<+<<<<<< [<->-]<[> > > >+<<<<[-]]<[> > >-<<<-]> > >[> > >+<<<[-]]>[<<<<<-> > > > >-]<<<<< [> > > > > > >+<<<<<<<[-]]<[> > > > > > >-<<<<<<<-]> > > > > > >[>+<[-]]> [> > >+.<++++.+++++.-----.--.>++.[-]]>[>.++..++.>-.++++.<<-<<<[-]] 俺も8文字限定で作ってみた。 で、心持ち短くなった。まだまだ短くなりそう。 俺も「>>が多すぎます」って怒られたwwwwwwっうぇ ・・・orz
>>537 accept/rejectを表示させる処理が俺のよりずっとスマートだね。GJ!
acceptを表示した後の[-]はなくてもいいっぽい?
>>538 タハー(ノ∀`)
途中で弄ったときに無駄な処理作っちゃった
訂正前(line:4) [> > >+.<++++.+++++.-----.--.>++.[-]]>[>.++..++.>-.++++.<<-<<<[-]]
訂正後(line:4) [> > >+.<++++.+++++.-----.--.>++.>]>[>.++..++.>-.++++.>]
こんなもんかな
Rubyの圧勝だなw puts(if gets.chop == $_.chop.reverse then "accept" else "reject" end)
>>540 NondeterministicTuringMachine的に解いてみて。
542 :
デフォルトの名無しさん :05/02/08 22:01:41
>>541 はぁ?wわけわかんねー単語出してんじゃねえよwww
Rubyの圧勝wwwwwwwwww
痛いのが沸いてるな
>>537 01010101がrejectされるのは仕様ですか(´・ω・`)
545 :
デフォルトの名無しさん :05/02/09 12:08:15
547 :
デフォルトの名無しさん :05/02/11 02:08:22
BF->.com実行ファイルのコンパイラ誰か作ってー
548 :
デフォルトの名無しさん :05/02/11 04:19:21
Ruby>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>BreinFack!
ruby厨はbrainやfuckのスペルもまともに綴れないほど知能が低いのか。 そりゃ非決定性チューリングマシンなんて聞いた事もないだろうな。
550 :
デフォルトの名無しさん :05/02/11 05:54:32
Rubyは最高言語!!!!!!!!!!!!!!!!!!
限定された条件のでのプログラムが面白いのに… 例えるなら、俳句の会に乱入にしてもっと400字で発表したほうがいい! とか言ってるようなもんと思った。
留byほどすばらしいげんごは存在しない。
命令数同じでもう少し使いやすい(あるいはもっと使いにくい)言語には出来ないものか。
554 :
デフォルトの名無しさん :05/02/11 07:50:59
超小型LISPはどうだ? もしくはforth、prologだな
555 :
デフォルトの名無しさん :05/02/11 10:48:13
Rubyとか叫ぶならこのぐらいやって欲しいなぁ +[>>>>+++++++++[<+++++++++<+++++++++++++<++++>>>-]<+.<.>>++++[<++++>-]<.[-]<++++.[-]<---.[-]<]
>>555 Ruby厨がそんなことするわけもできるわけもない。
釣られ厨のせいでスレが台無しだな
++++++[>++++[>+++>+++++<<-]<-]>>++++++.>---.---.+++.-----.-.
559 :
デフォルトの名無しさん :05/02/14 00:13:54
++++++++[>+++[>+++>++++>+++++<<<-]<-]>>-.>+.>.----.+.
>>555 短縮
+[>>>>>+++++++++[<++++[<++<+++<+>>>-]<+<+>>>-]<<+.<.>>++++[<++++>-]<.[-]<++++.[-]<---.[-]<]
>>553 BrainKill
・命令以外の基本動作はBrainF*ckと同様とする
命令
+ ポインタが示すメモリ位置のデータをインクリメントし、ポインタをインクリメントする
- ポインタが示すメモリ位置のデータをデクリメント
> ポインタを3進める
< ポインタを2戻す
. ポインタが示すメモリ位置のデータを出力
, ポインタが示すメモリ位置のデータを出力
{ ポインタが示すメモリ位置のデータの分だけ戻す
} ポインタが示すメモリ位置のデータの分だけ進める
すごろくゲームのようだ…
>>563 私が参加しているプロジェクトでは次のように歌われている。
♪一日一歩、三日で一歩、一歩進んで二歩下がる
#ダメすぎ
そりゃそうと、ポインタを進めるのに無駄に手数が増えただけで、基本的には変わらないのかな?<BrainKill
>>564 ループの命令がないじゃん。
{}を駆使するとループ組めるのかな>BrainKill
他にも+ではポインタもインクリメントされるので、同じデータを何回もイン
クリメントする時は大変そうだし、かなり頭がこんがらがりそうだ……。
え
カッコのマッチングがないので、インタプリタを作る方は本当にスイッチ1つで済むね。
入力命令がないわけだが。
+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><< +><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><< +><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><< +><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+><<+ +><<+><<+><<+><<+><<+><< ><<.><{ 'A'を無限に表示@BKill 「>>が多すぎます」にならないように工夫されてると思った。
569 :
デフォルトの名無しさん :05/02/16 01:20:12
ほ
うひょーハードウェア実装してー言語だなぁ!
標準入出力を除けば、電気使わなくても実装できそうだよな。
>>572 交通整理なんかで使うカウンタを1列に並べて
ポインタ位置に目印を置いたものを想像
↓
ソースはどうしようか…大きさの違うボールを並べるか
↓
レールにボールを転がすと適当に振り分けられて
ボタンを押したりポインタを動かしたりベルを鳴らしたり…
↓
ピタゴラスイッチ♪
…と思ったら放送終了してたのか。じゃあインクレディブルマシーンで。
>>573 カウンタならダイソーにあったよ。
ちょっと惹かれた。
TIMってまだ開発されてたのか
www BFの+ っうぇwww BFの- うはwww BFの> おkkwww BFの< みwなwぎwっwてwきwたwぜw BFの , 修正されるねwwwwwwwww BFの . ワロスwww BFの[ ワロタwww BFの] Hello,world! wwwwwwwwwwwwwwwwwwwwwwwwwwwワロスwwwうはwwwwww wwwwwwwwwwwwwwwwwwwwwおkkwwwっうぇwwwワロタwwwうは www修正されるねwwwwwwwwwおkkwwwwwwwwwwwwwwwワロスww wうはwwwwwwwwwwwwwwwwwwwwwwwwおkkwwwっうぇwwwワロ タwwwうはwwwwww修正されるねwwwwwwwwwwwwwwwwwwwwww wwwwwwww修正されるねwwwwwwwww修正されるねwwwwwwwwwww wwwwwww修正されるねwwwwwwwwwワロスwwwっうぇwwwワロタwwwおkk wwwwwwwwwwwwwwwワロスwwwうはwwwwwwwwwwwwwwwwww wwwwwwwwwおkkwwwっうぇwwwワロタwwwうはwww修正されるねwww wwwwwwおkkwwwwwwwwwwwwwwwwwwwwwwwwワロスwwwうは wwwwwwwwwwwwwwwwwwwwwwwwwwwおkkwwwっうぇwwwワロ タwwwうはwwwっうぇwww修正されるねwwwwwwwwwおkkwwwwwww wwwwwwwwワロスwwwうはwwwwwwwwwwwwwwwwwwwwwおkkw wwっうぇwwwワロタwwwうはwww修正されるねwwwwwwwwwwwwwwww ww修正されるねwwwwwwwwwっうぇwwwっうぇwwwっうぇwwwっうぇww wっうぇwwwっうぇwww修正されるねwwwwwwwwwっうぇwwwっうぇwww っうぇwwwっうぇwwwっうぇwwwっうぇwwwっうぇwwwっうぇwww修正され るねwwwwwwwwwワロスwwwっうぇwwwワロタwwwおkkwwwwwwwwwww wwwwワロスwwwうはwwwwwwwwwwwwwwwwwwwwwwwwwwwおk kwwwっうぇwwwワロタwwwうはwwwwww修正されるねwwwwwwwww
普通にワロス
VIPPERかよ・・
痴漢ネタ飽きた
このスレが建ってからもう約二年と半年経つんだな・・・
あれからホントに色々あった。。。
このスレ保守されまくりで長生きしてるよな。
>>370-372 あたりなんかGJだよな。。。
まあそれは俺だけどな。
加 BFの+ 減 BFの- 進 BFの> 戻 BFの< 始 BFの[ 終 BFの] 入 BFの, 出 BFの. Hello World! 略
>>582 Hello World!
減始進加進加戻戻減減減減減減減終進減出戻加加加加加加加加加加始進加加加進減減減戻
戻減終進減出加加加加加加加出出加加加出進加出減減減減減減減減減減減減出戻加加加加
加加加加出減減減減減減減減出加加加出減減減減減減出減減減減減減減減出進加出
>>584 気がするだけだと思うんだ
っと思っていたらわかりやすい気がしてきた。
>>587 サンクス。すごいな。目潰れるかと思った。
Brainfuckを改造してシンプルにグラフィックスを出力する機能を搭載するにはどうすればよいですか
PutPixel(100,200,0xFF8800)と標準出力に出力されたら点を打つ
普段使っている領域の前(後ろ)の部分が書き換えられたら描画する
@で描画コマンド実行(dr@w) 0: 描画コマンド番号(0=描画色設定, 1=点, , 2=直線, ...) 1, 2, 3, ... 描画コマンドに対応した引数 +>++>+++<<@ で(2,3)に点を表示
メモリの一部をVRAMにすりゃいいだろ
ねぇ、おまいら、nondeterministicTMのプログラムが書ける言語もいいけど、 deterministicTMのプログラムを書ける言語ってないの?処理時間は無視して。
597 :
デフォルトの名無しさん :2005/04/17(日) 02:00:35
俺の携帯はBREWだから、出来ないんだYO!! 誰かせめてBREWじゃなくていいから、CGIに作ってYO!!
598 :
デフォルトの名無しさん :2005/04/17(日) 02:01:12
>597 俺のもBREWなんで、CGIで作れないかなと思ったんだが、 入力の処理ってどうする? BFのソースと一緒に入力用のバッファも記述させて、 入力の命令が来たらバッファから1Byteちぎって入力とする。 とか考えたんだけど、それだと少なくともヒット&ブローはできないな。 どうせCGIにするならメモリ上にリファラとかファイルに保存される領域とか PNGで出力されるVRAMとか用意して、カウンタやBBS作れたらいいな。
インタプリタなんて10数行で作れるやん。
エンジンだけならね 使いやすくするのはめんどいよ
IDE凝るまでもなくデバッグ用拡張命令いくつか入れればそんな面倒でもないし実用性?もかなり高くなるよ。
603 :
デフォルトの名無しさん :2005/05/21(土) 23:43:48
age
604 :
デフォルトの名無しさん :2005/05/27(金) 12:32:22
>>604 それふつうの環境だと見る事ができないって言う最大の欠点があるんだよね(w
Webで公開するときは色変更してほしい位だ。
>>605 欠点なんだが、BFらしさの極限という気もするw
>>606 紙にも書けない(w
絵にも描けないおもしろさかな。
>>607 プログラマーの正しいWhitespaceの使い方
上司「○○君、出来たのかね?」
○○「はい。」
--- ここで白紙のコピー用紙を数枚差し出す ---
○○「家でWhitespaceのコードを書いてきました。確認して下さい。」
610 :
デフォルトの名無しさん :2005/06/11(土) 17:51:35
うむ。忙しくなければ、俺も一回は許す。 で、そいつと一緒にアメリカンなトム笑いをすると思う。
>>610 2度目と二番煎じは人事にチクリだよね。
#でもここを読んでしまったので一度目も無理かもな~。
ちっちゃいフォントでプリントアウトすれば無問題
Whitespaceのソースコードは素晴らしいことにどんな小さなフォントで印刷しても 可読性は低下しないからな #ゼロより低くはなりようがない
その代わり向上もしないがな
WindowsやMacintosh程度の規模のOSのコードをガムの包み紙1枚に印字することも可能だ。
つか白紙の紙用意すればそれで何のソースコードにもなるなw
これからは仕様書もWhitespaceで書こう。
>>189 8a9
> int l=0;
16,17c17,18
< case '[': if (!memory[pointer]) while (*(++p) != ']') ; break;
< case ']': if (memory[pointer]) while (*(--p) != '[') ; break;
---
> case '[': if (!memory[pointer]) while (*(++p) != ']' || l>0){ if(*p == '
[') ++l; if(*p == ']') --l; } break;
> case ']': if (memory[pointer]) while (*(--p) != '[' || l>0){ if(*p == '
]') ++l; if(*p == '[') --l; } break;
26a28
> return 0;
>++[>+++++[>+++[<<<++++> > >-]<<<+>>-]<-]>++++[>+++[<<--->>-]<-]>+++[<----->-] ++[<<<.>.<.>>.>-]>+++[>++++[<<----->>-]<-]<<<<.>+.<.> > >.>+++++[<<<------> > >-] ++[<<<<.>.<.>>.>>-]+++++[<<<-----> > >-]<<<<.>++.<.> > >---.<<<.>+++.
あれ、
>>189 って [ ] の入れ子に対応してなくね?
>>626 あーそういうことなのか、やっと理解したよ
なんか
>>623 は俺の知らない言語で書かれたコードだと思ったw
>>627 diffとpatchは覚えておくと便利ですぜ。
多重ループを再起で処理する実装気盆ぬ
>>629 D言語だけど
// brainfuck interpreter
import std.stream;
char[] memory = [0];
int pointer = 0;
char[] script = " ";
int position = 0;
int main(char[][] args){
script = args[0];
bf(0, true);
return 0;
}
void bf(int homePosition, bit active){
for(; position < script.length; position++) switch(script[position]){
case '+': if(active) memory[pointer] ++; break;
case '-': if(active) memory[pointer] --; break;
case '>': if(active) if(++ pointer >= memory.length) memory ~= 0; break;
case '<': if(active) assert(-- pointer >= 0); break;
case '.': if(active) std.stream.stdout.write(memory[pointer]); break;
case ',': if(active) std.stream.stdin.read(memory[pointer]); break;
case '[': bf(position++, active && !!memory[pointer]); break;
case ']': if(active) position = homePosition - 1; return; break;
default: break;
}
}
とりあえず std.stream.stdoutは最近のバージョンで削除された。 代替えとしてstd.cstream.doutを使おう。
632 :
631 :2005/09/13(火) 23:53:29
for文使ってるのが凄く気に入らないので再帰のみに書き直してみた。 // brainfuck interpreter import std.cstream; char[]memory = [0]; int pointer = 0; char[]script; int main(char[][] args){ if(args.length<=1)return 0; script = cast(char[])std.file.read(args[1]) ~ ']'; bf(0,true); return 0; } int bf(int position,bool active){ switch(script[position]){ case '+':if(active) memory[pointer]++;break; case '-':if(active) memory[pointer]--;break; case '>':if(active && ++pointer == memory.length ) memory ~= 0;break; case '<':if(active) --pointer;break; case '.':if(active) dout.write(memory[pointer]);break; case ',':if(active) dout.read(memory[pointer]);break; case '[':int next = bf(position + 1 , active && memory[pointer]); return bf((active&&memory[pointer]) ? position : next , active); case ']':return position + 1; default: } return bf(position+1,active); }
>>631 知らんかった。THX
やー俺も最初一文字ずつ再帰でやろうとしたんだけど、
ロジックは合ってるはずなのに全然うまくいかなくて
よく見ると色々改良されてるなあ
>>633 > ロジックは合ってるはずなのに全然うまくいかなくて
こういうときはロジックが間違ってるハズなので自分のソースでも他人の物として読みなおすといいよ。
だいたいとてつもなく間抜けな間違いにテラハズカシスな思いをするのだけど、そういう間違いって思いこみ
で気が付けなくなってるんだよね。orz
>>634 あーいや、実はテスト用のbrainfuckスクリプトが間違っていたんですわ
しょーもなっ!
>>635 なんじゃその激ワロスな事態
PCが動かない壊れたカモ(ビクビク)←実はコンセント入ってない並にワラタ
638 :
631 :2005/09/14(水) 17:10:54
高速化を重視して末尾再帰のみに変形した。 これで普通のループのみのパターンと速度はほぼ同じはず。 import std.cstream,std.file; int main(char[][] args){ if(args.length<=1)return 0; char[]memory,script = cast(char[])std.file.read(args[1]); bf(script.ptr,script.ptr+script.length,memory.ptr,memory); return 0; } char*bf_jmp(char*pos,int step,int nest){ if(!nest)return pos-step; return bf_jmp(pos+step,step,nest + (*pos=='[')-(*pos==']')); } void bf(char*pos,char*end,char*ptr,char[]memory){ if(pos == end)return; if(ptr == memory.ptr+memory.length)ptr=&(memory~=0)[$-1]; switch(*pos){ case '+':++*ptr;break;case '-':--*ptr;break; case '>':++ ptr;break;case '<':-- ptr;break; case '.':dout.write(*ptr);break; case ',':din .read (*ptr);break; case '[':if(!*ptr)pos = bf_jmp(pos+1,1,1);break; case ']':if( *ptr)pos = bf_jmp(pos-1,-1,-1);break; default: } return bf(pos+1,end,ptr,memory); }
わざわざ末尾再帰にするくらいならループでいいんじゃないのか? …などと思う俺は素人ですかそうですか
動けばいいのさ動けば
いやそれは美しくない
>>640 は実務畑でプログラムを覚えた人
>>641 はアカデミックな世界でプログラムを覚えた人。
僕は実務畑でプログラムを覚えた後でアカデミックな環境に行った変な人
だからどっちの言い分も理解できるけど、どっちももう一方をみましょうとだけ言うおじちゃんなの。OTL
あれ? ポインタ値って負の数も許容されるんだっけ?
BFのインデックスのことなら別に禁止はされてないんじゃないの。 たいていの実装ではアボーんしそうだが。
㌧クス。負の数を扱うのはアレだから、とりあえずメモリサイズ 256 にして、回り込むようにしたよ。 .NET の実行ファイル吐き出す奴は出来たから、最適化まで出来たら公開してみるよ。
えらい長いな
, の扱いがおかしい気がする
649 :
646 :2005/10/09(日) 22:37:58
, は Enter で入力された改行コードもしっかり食べるみたい。 CR or LF の文字が出てきたら、それ以外の文字が出るまでループさせたほうが良いのかな?
人が居ないな。 某スレで出てきた、菱形を書き出す BF コード。ちょっと短くなった。 >>>++++++++++[>+>>>++++<<<<<<<+++> > >-]>>>>++<<<<<<<++>++++++ ++>>++++[<<-[>+<<.>-]>>>>+[>+>..<<-]<.<<-[<+<.>>-]>>>>+[>..< <+>-]<<.<-]++++[<<+[>+<<.>-]> > > >-[>+>..<<-]<.<<+[<+<.> >-]> > > >-[>..<<+>-]<<.<-]
すげぇ。
そういえば、ある BF コードが同じ結果を出すコードの中で最短のものであるかどうかって、証明できると思う?
無理
>>652 ・証明できるのもある。
例えば
,.
はこれ以上短くならない事がしらみつぶしで証明できる。
・一般的な証明法はない
あるとすると、問題となっているコードより短いコード全ての
停止性が判定できることになる。
と思ったんだがどうだろう。
「最短であることが証明できない」コードは構成できるかな。
>>654 >・一般的な証明法はない
>あるとすると、問題となっているコードより短いコード全ての
>停止性が判定できることになる。
くあしく
656 :
652 :2005/10/20(木) 18:09:43
[] が無いと、虱潰しで最短であるかどうかが調べられそうな気がします。 この仮定が合っていれば、証明できないコードには最低限 [] が含まれていることになるんですが……。 今回 652 を思ったわけは、 1: メモリ配置の工夫によって <> を削減できる 2: <> の量は計算手順に変化を与えない から、計算手順を固定で考えれば、最短コードであるかどうかが証明できそうな気がしたんです。
657 :
654 :2005/10/20(木) 18:25:20
661 :
652 :2005/10/20(木) 21:11:05
たった今気づいたんだけど、[] の有る無しに関わらず最短コードかどうかの証明は出来るはず。 現在、最短コード候補として有限の長さ L の BF コード A があった場合、 BF の命令数は 8 だから、A より短いコードは有限個で、高々 8 ^ (L - 1) 個。 虱潰しで探せば、いつかは証明できる。 問題は、証明するのに指数時間が必要だということか。 あと , が出現したときに証明がややこしくなるということ。
アルゴリズムを提示する場合それが 有限時間内に終わることが明らかでないといけない。 +[] +[.] +[+-] ... が"hello, world"を出力しないことをどうやって検証するの? みりゃわかるってのは無しねw
>>661 そのためには、全ての長さ(L-1)以下のコードBについて、
「AとBは異なる結果を出す」
事を証明しないといけないが、それはどうする?
664 :
652 :2005/10/20(木) 21:22:51
665 :
652 :2005/10/20(木) 21:24:29
おけおけ。確かに結果が異なるかどうかを判別する方法についても議論する必要があったか。
>>662 +[] → ループ開始時にカレントポインタが非 0、かつループ内でメモリの値が変化しない → 停止しない
+[.] → 同じく
+[+-] → 同じく
... → 同じ値を3回出力している。"hello, world" にこの並びは無い。(けどこの判定の自動化は無理そう)
つまり、本質的には停止性問題なので、最短判定はできないと。
670 :
652 :2005/10/20(木) 23:38:34
う~ん。流石に停止可能性まで考えると難しいなぁ。 とりあえず、<> の削減に関しては、機械的に出来ると思うんだ。 ポインタ移動のグラフかいて、各点の間の適正距離をだして、メモリを再配置。 メモリ多く使うコードになると、これだけで随分減るしと思う。
線形合同法で擬似乱数を先頭から 255 個出力するコードが出来たです。 X(n) = (69 * X(n-1) + 255) mod 256 で、X(0) には 0 を指定の決めうちです。 >++++++++[>++++++++<-]>+++++<<+[>[>>>+<<<-]>>>[<<[<+>>+<-]>[<+>-]>-]<<<-.<+]
>>650 のコードがもう少しだけ短くなった。コツを覚えてきたみたいだ。
> > >++++++++++[>+> > >++++<<<<<<<+++> > >-]> > > >++<<<<<<<++>+
+++++++> >++++++++[<<-[>+<<.>-]>[<+>-]> > >+[>+>..<<-]>[<+>-]<<.
<-]++++++++[<<+[>+<<.>-]>[<+>-]> > >-[>+>..<<-]>[<+>-]<<.<-]
あと、
>>646 をちょっと弄った。文字じゃなくて数値が出る様にコンパイルすることも出来るように。
改行コードの扱いはちょっと考えさせてくれ。
このスレがまだあったのか・・・
まだだ…まだ終わらんよ。頼むよ('A`)
と思ったけどもうだめぽ… +++++[>++++++++<-]>.-.<+++[>+++++++++<-]>-.<++++[>++++++++<-]>-.<+++++++[>--------<-]>+.
指定された文字列を出力するBFコードを出力するソースキボン
>>670 停止問題は、「メモリが無限にある」が前提になっている。
使用メモリを有限にすれば虱潰しでいけるよ。
(実際には時間がかかりすぎるがな)
メモリが無限にあればできるはずのことができなくなったりはしないの?
コードが有限でメモリ使用量も有限であることが保証されていたとしても 停止性が保証されるわけではない。
停止性が保証されるのと 停止するかどうか判断できるというのは だいぶ違うような気が
682 :
sage :2005/11/16(水) 04:02:48
++++[->++++[> >+>++>+++< <++< <-]>++< <]> >++> > > >,<[->-<]>[[-<+< <.< <+> > > > >] < < < <.> > >-[-< < < <--[-> >.> >[->+< <.>]>[-<+>]< < <.<.<]>>.> >[-< <.> >]< <.<.<]]
sage
ふと思ったんだが、brainf*ck同士を戦わせるゲームを作ったら何気に最強じゃねえ? code warsみたいなの?
勝利条件は?
メモリスペースに双方のコードを配置して、 相手のコードを上書きして殺せば勝ちとか。
それだと、相手のコード領域を探して地雷撒くだけになりそうな悪寒。
+[>+] これだけで良いかな?地雷撒くんだとしたら。-1 があったら停止するけど。
>689 おれもそれを最初に考えたけど、それって短すぎるから、相手のコードがすごく長いときに自分が先に殺されて負けない?
691 :
689 :2006/01/02(月) 00:53:39
>>690 いや、相手も1メモリずつの書き換えしか出来ないから、小さいほうが有利かと。
うんうん、結局は地雷を撒かれる前に逃げるか地雷を撒くかの2択戦術になっちゃう。 CoreWarsはfork(?)があるからMiceみたいなコードが書けるけど。
誰も自己複製が最強って言い出さないな('ω`)
Tieraみたいに自己複製と自己書き換えが出来るのが最強。 と思ったら自己書き換えで相手と同じコードになって自爆。
695 :
デフォルトの名無しさん :2006/01/12(木) 19:11:40
>>693 brainfuckじゃ自己複製なんてできないよ
>>696 よく考えたら自己複製しても処理のノベ数が増えるわけじゃないな。
効率むしろ落ちる。orz
自立型じゃないけど、先手 0x00、後手 0xFF で多くメモリを埋めたほうが勝ち。 勝負は500ステップ、戦況を見ながら差し手が1ステップずつ入力してゆく。
潜水艦ゲームだな。
>>698 埋めるってのは、「最後に値を変化させた方」をポイントとするのかな?
つーかなかなか面白そうだな
Brainfuck v.s. Lifeはどっちが強い?
いや、そんなネタ言語と一緒にされても。
>703 ちょwww
この言語ってさ、[] を含まなければ有限長のコードに対して必ず停止することが証明できるんだよね……? 合ってる?
[]以外でループさせる方法がないだろうし、あってるんじゃない?
入力無いから続けられません……ってのは微妙に違うんじゃないか?
そこでライフゲームですよ。
BFで関数呼び出しをエミュレートする方法ある?
俺も知りたいな。 ちょっと考えてみるか。
jmp命令追加しろ
unlambda使えば関数呼び出しなんて一瞬で書けますよ( ´∀`)
書いて~。
`ii
717 :
デフォルトの名無しさん :2006/02/02(木) 05:36:12
魚の骨のスレはここですか?
719 :
デフォルトの名無しさん :2006/02/02(木) 17:52:53
720 :
デフォルトの名無しさん :2006/02/02(木) 17:57:45
要するにマシン語ですか?この言語
722 :
デフォルトの名無しさん :2006/02/04(土) 07:04:25
要するにマシン語の部分空間ですか?
723 :
デフォルトの名無しさん :2006/02/09(木) 15:47:57
もっと議論したまえ
724 :
デフォルトの名無しさん :2006/02/12(日) 14:11:11
+++++とかの表記ってまさか5クロック要するとかいう?
最適化も何もしない BF チップが出来たら言うかもしれない。 プログラミング上は 5 ステップ。
726 :
デフォルトの名無しさん :2006/02/12(日) 15:03:01
BrainFuckでLISP処理系書けるか? 書けないならゴミ
むしろ LISP 信者がゴミ
書けないとしたらチューリング完全では無いということになるよね。 BrainFuckはゴミ。
729 :
デフォルトの名無しさん :2006/02/12(日) 15:41:49
>>725 で、現在最も優れているコンパイラはその最適化処理は施してくれるのかね?
730 :
晒しage :2006/02/12(日) 15:44:15
ネタ言語に何か必死に食いついてる奴がいるな
BrainFuckとLispは目くそ鼻くそっとわけだ。 BrainFuckも出世したものだね。
Wikipediaより。 一見単純な機能しか持たないモデルがチューリング完全である例としては、 5つの基本関数だけをもつ純LISPが挙げられる。 またBrainfuckのモデルなどもそうである。 同じやんか。
あはははww あ~。でも、チューリングマシンの状態遷移集合を直接解釈するインタプリタあったら面白いかもな。 普通にありそうだな。やっぱりつまらん。
並列動作するチューリングマシンアレイがCPUの主流になる日がきっと来ると信じてる
そんで、その動作の様子を何らかの方法で視覚化して観察できたら……。 やべえ欲しい。
>>732 pure pure lisp ... 計算なんかはでぇきないの...
ってな替歌があったのを思い出したよ.
>>702 何とか堪えて読んでいたが最後のHQ9++で吹いたw
>>723 それが、量子コンピューターじゃないっけか?
良子コンピューターってどういうの?
電子とかを、量子的な揺らぎを持った状態のまま保存する。これが量子ビット。 量子ビットを揺らぎを保ったまま接続してやると、これが量子もつれ(だったかな)。 量子もつれ状態のビット群は取りうるすべての状態を確率として持っているので、 問題(条件)を何らかの方法で量子ビット群に与えてやる。 そうすると全ての状態からその条件に対する解のみが選択されて全ビットが現れるはず。 これが量子コンピュータ的演算。 間違ってたらスマソ。
>その条件に対する解のみが選択され なんか魔法みたいだな。
この宇宙が存在していること自体魔法みたいなもんだ。
全ビットを個別に取り出すことはできないよ。 何かうまい方法を使うんだが、ややこしかった。
744 :
デフォルトの名無しさん :2006/02/26(日) 00:28:58
二頭身のメイドさんがメモリ空間をちょこちょこと歩き回りながら処理してくれるBFインタプリタなんて超素敵じゃないか? ステップ実行とかあれば、視覚的に思考できるという意味ではマジ便利かも
↑アホ。 メイドさんは秋葉原行って現実見て来い。
まぁメイドさんはおいといても、 グラフィカルにしたら愛着がわきそうな気はするな。
見てみたかった・・・ 画像だけでもぷりーず
サンキュー!! うっわー、これ可愛すぎ…。
惜しむらくは、ときたまブリンクしなくなったり全速実行できなかったり入力がインタラクティブじゃないな。 #確認してないけど、キャラ画像差し替えでいいから占有面積減ってくれたらもっと嬉しい。
試してないけど、絵とか自分で描いたの?
自分でBrainfuckインタプリタ作ってみたがHello, worldは動いても
>>213-216 のヒットアンドブローとかBf Golfにある奴が動かない・・・
>>755 ネストした[]に対応したか?
[ [ ] ]
>>756 対応したつもりだが動きを追いかけると途中で無限ループにハマってる。
あーねwww
BFネイティブCPUなんか出たら発狂しそうだ
メモリのサイズを4バイトも取ってたのが間違いだった。
むしろBFでBFを定義する
最速のbfインタプリタってどれだろうか
765 :
デフォルトの名無しさん :2006/03/01(水) 11:47:46
当然アセンブリで実装してんだろうな
突き詰めれば、オートマトンの処理速度の限界は メモリのアクセスタイムによって決まる。 だから高速なメモリに直結されたデバイスをドライブできれば 使用言語は何だっていいはず。 具体的には ・普通のCPUでL1キャッシュに全部HITする程小さいデータ(プログラム) ・プログラマブルシェーダでVRAM上でやる まあ前者はその性質上アセンブラか機械語直かそれに近しい言語で記述する必要があるだろうし 後者もスクリプト言語からやれるかというとそうではないだろうけど 「アセンブラだから早い」というのは幻想。
767 :
デフォルトの名無しさん :2006/03/01(水) 13:43:08
深いパイプラインだと遷移がネックになりそうじゃね? シェーダはちょっと違うだろ。状態遷移は基本的にスカラー演算だからベクトル型の演算器には不向き。
不向き以前にシェーダで任意のアドレスのメモリを好き勝手に読み書きできるのか?
シェーダの状態をメモリの内容に対応させて、 プログラムカウンタに対応するトークンを持っているところだけが 状態遷移の権利を持つようにするんだよ。
@を出すだけでこんなに疲れるとは… >>>>>>+[<++[<++[<++[<++[<++[<++>-]>-]>-]>-]>-]>-]<<<<<<.
>>771 そこに至るまで:
・暇だったからJavaScriptでeval無しでインタプリタを実装してみる。
(数字ビュー、文字ビュー、コンプレックスビュー、メモリビューを足してみる)
・スレ冒頭の@を出す部分を見て、2^6 = 64だから再帰的に書けるのではないかと思った。
・PGなりたてだから許して。
773 :
770 :2006/03/03(金) 21:15:03
メモリコピーってこうするしかないんですかね… , [>+>+<<-] (元のを破壊して新たに二つ作る)
掛け算 ,>,<[>[>+>+<<-]>>[>+<-]<[<+>-]<<-]
出力するの忘れてた(^^;) ,>,<[>[>+>+<<-]>>[>+<-]<[<+>-]<<-]>>>>.
入力された位置までのメモリを破壊しながらポインタを移動する。 (ただし移動先まで初期化されていること) ,[[>+<-]>-]< 入力された値から1を引き引きした値の列を表示する ,[[>+<-]>-.]<
777 :
デフォルトの名無しさん :2006/03/10(金) 06:34:04
>>>>>> の代わりに 6> で認識してくれるコンパイラはどこですか?
作れ
なんと面白みのない
ちょっと書いてみたいがGUI作ったことないショボイ俺。
783 :
デフォルトの名無しさん :2006/03/16(木) 07:12:20
BFによるBFソースの文法チェッカというのを思いついたけど 眩暈がしてきて作るのやめた。
文法チェッカったって文法エラーが無いじゃん 「不正な文字です.」くらいじゃね?
括弧の対応もじゃない?
括弧は対応する必要って無いんじゃね?
暴走するっていう結果でもエラーじゃないのか。 ほんとに限りなく低級なマシン語だな(ほめ言葉)
なんと!チューリングマシンの停止問題を解決しよう、と言うのかね?
や、[ が一個しかないコードは暴走するが、これをエラーにするとしても、 他の例はおっしゃるとおり、停止性問題になってしまうから解決不可能だよね。 つまりエラーを定義するアルゴリズムが無い → 暴走してもエラーじゃない。 と思ったのさ。
>[ が一個しかないコードは暴走するが しねーだろ
]が一個しかないコードはどうなるんだろう?
そりゃ実装しだいだけど何も対策してないならテーブルのインデックスエラーじゃないの。
>>646 の人が作ったbfに[だけ入れたら怒られた。
やっぱりエラー扱いらしい。
エラーなら暴走しないか、そりゃあ。
さっき思いついたんだが、 関数呼び出しってループとifで擬似的に実装できるよな?
呼び出し以前にどうやって関数用のコードを配置して元の位置に戻ってくるのかはともかくな
ループの中にifと似たようなブロックを多数設置、 状態遷移用のスタックと、スタックポインタを用意しておいて、 そいつの値によってどのブロックを実行するか決める。 ブロックの終端でスタックをポップして前のブロックのすぐ次に戻る。 「すぐ次に戻ってくる」っていうのが難しそうだが、 できないこともないと思うんだが。
TextSS のWindowsXP(Professional)64bit化おながいします もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
Branfuckで書かれたウィルスがあったら面白そうだが、この言語じゃ書けない気がする・・・
ソースコードの圧縮率が高そうだな
ランレングスでも十分縮まりそうだな。
802 :
デフォルトの名無しさん :2006/05/02(火) 21:58:38
ブレインファックって日本語にしたらどういう意味?
ファック、ファック、アーケン!
の~みそこねこね
805 :
デフォルトの名無しさん :2006/05/03(水) 02:26:59
コンパイル
何もかもが懐かしい……
スレタイの[+-]が顔に見えた
コーホー
掛け算できた。
[-]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++> [-]+++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++> [-]> [-]> [-]> [-]> [-]<<<<<[-<[-> > > > > +<<<<<
]> > > > > [-<<<<<+> > > +> > ]<<[<+> -> > [-]> [-]<<<<[-> > > +>
+<<<<]> > > > [-<<<<+> > > > ]<[[-]<-> ]<+<]<<]?
上記のコードでは、メモリ上の[0]と[1]を掛けて、結果の下位1バイトを[2]に、上位1バイトを[4]に格納。
※[0]はメモリ0バイト目の意味。
計算に使う領域は、バッファを含めて[0]~[6]。
上記のコードは、
[0]=134
[1]=67
を代入後、[0]*[1]の掛け算を実行して、計算結果を
[2]に下位1バイト
[4]に上位1バイト
を格納する。[2]=18,[4]=35となる。答えは8978。
最後の"?"は
>>529 の拡張命令。メモリダンプ。
実行時間かかるね。
Macro BrainFuckマダー?
次は
>>810 のようなイディオムを検出して
直接CPUの乗算を行う最適化インタプリタの開発だw
>>813 それだと直接アセンブラ書いたほうがよくね?
天才現る
>>812 linuxでもコンパイル通ったよ
GCCのバージョンは3.4.4(Gentoo linux)
読みやすくなったら、この言語の存在意義がなくなると思うんだ。僕。
でも書きやすくはなってほしい。 つまり IDE があればいいのか。
[…]のネストを色分けで表示できるとカラフルでハッピーだな
820 :
812 :2006/05/16(火) 21:40:40
>>817 そうですね。
逆にトリッキーなコードが書けなくなって、面白みが減りますね。
実用性もないし。
>>816 コンパイルし直したら、何故かあっさり通りました。
お騒がせしました。
>>817 逆にCやアセンブラをBFに変換できれば、難読化ツールとして面白いかもな
コンパイルして最適化されたら、元のアセンブラになったりしてな…
というか、JMPもサブルーチンコールもスタックも実現できんから、どうにもならんか
アセンブラを遥かに凌駕する難解言語だからな
>822 Hello, World書くのに数年かかったマルボルジェを知らんな? BFなんてはるかに読みやすい。
機械語とどっちが難解ですか?
マルボルジェのほうが難解ですたい……('∀`)
なんかわざとらしく無意味に難解にした言語って好きじゃないな その点BFは、ただ難解っていうより「シンプル」だし
なんかhtmlのへっだ出力が上手くいかない・・・
処理系の中に無理やりhttpヘッダを書き込んで解決・・・ でも、納得いかない・・・
よく見たら#!/usr/local/bin/perl bf.plのドットでASCIIの00の文字(NULL?)を打ってた・・・・orz
Vアプリ版のインタプリタ無い?
>>828 Malbolgeについては、高級言語からMalbolgeへのコンパイラができた、
っていうのを前に聞いたが…
名大っぽい。
持ってるけど、勝手に上げていいもんか。
ありがとう
>>1 のリファレンスが間違ってることに今ごろ気づいた・・・。
ほ…本当だ。
このスレ的には99bottle in bfが1つの命令で書けてしまう HQ9+はどうなの?
>842 >702-704
>>843 thx。
branfuckでインタプリタ作るか
+ +++++++ + + + + +++++++++++ ++ +++++++ + + + + + + +++++++++ +++++++++ + +++ + + + + + ++ + + + + +. + + + + + + +. + + ++. -----------.+++++++++++++.
847 :
デフォルトの名無しさん :2006/09/01(金) 11:04:14
age
この言語に特化したCPU作ったら100Ghzくらい出せんかな。
クロック上がっても同じことをするのに必要な命令数が増えるから意味なすぴ
RISC VS CISC みたいなもんか? 1Thzでたら逆転するかもな。
AからZまで出力する最短コードがわかりません 誰か教えて(`・ω・´) ++++++++[>++++++++<-] +++++[>+.+.+.+.+.<-]>+.
852 :
デフォルトの名無しさん :2006/09/10(日) 07:48:45
>>851 8命令短縮
++++++++[>+++>++++++++<<-]>++[>+.<-]
brainfuckで論理演算ってできるの? まぁできるはずなんだろうけど、どうやってやるのか見当もつかない。
破壊的 and メモリが [入力A][入力B][出力=0] と並んでいるなら [[-]>[[-]>+<]<] 破壊的 or メモリが [入力A][入力B][出力=0] と並んでいるなら [[-]>>+<<]>[-]>+<]< not が難しいな [入力A][出力=0] として [[-]>+<]>- とか
C言語をBrainFuckに変換するライブラリをC言語で作ろうぜ
関数呼び出しとかがどうなるか見ものだな。
論理演算について教えてくれたひとありがとう。 ということは、8ビット数値の論理演算もなんかできそうな気がしてきた。 まだ貼ってくれたコードも読めてないけども。
>>859 それは論理演算ではなくビット演算ではないか?
うお。そうだ。はずかし。
みんな良くこんな言語でコード書けんな。 なんかコツみたいなもんはあんのか?
先にアセンブリかじってると、案外何とかなるもんだったりする(のかもしれない)
2次元BFとかいう考えはどうかな < ポインタを左に移動 > ポインタを右に移動 ^ ポインタを上に移動 v ポインタを下に移動
いやまてよ、ポインタの値を無限次元にして、 メモリに入る値も無限次元にしたら夢がひろがりんぐ
次元の意味わかっててゆーてんか。
>>864 おぬし、BeFunge を知らんな?
むしろ知っているからこそ出てきた考えかも試練が。
ベクトルで移動できる命令も追加してくれ
>>866 もちろん
メモリの各番地に従来のメモリ全部と同等のものがあるようなものを考えて
それ全体がメモリの各番地に並んてる
ただしまあどうせ可算なので無限っていっても
たとえば素因数分解の指数とかって見ることで
普通に一個の整数にできちゃうから
あんま意味ないよなっていうのはその通りだけど
>>867 見てみる
>メモリに入る値も無限次元 のところがわかんなかったんだけど、 つまり無限配列の無限配列の無限配列の……ってことか。 なるほどね。
BFの不便さを体感すると便利なコンピュータがトランジスタやら フリッププロップやらでできてるのが信じられなくなる。
昔は真空管が2m並んだレジスタを手動でパチパチと……。 確かに別物な気がしてくる。
873 :
デフォルトの名無しさん :2006/10/02(月) 06:12:38
C++ の標準アルゴリズムっぽくしたら、ちょっとだけ実用性が無いだろうか? #include <iosfwd> template<typename BidirectionalIterator , typename InputIterator , typename CharType , typename CharTraits > BidirectionalIterator brainfuck(BidirectionalIterator p , InputIterator code_begin, InputIterator code_end , std::basic_ostream<CharType,CharTraits>& out , std::basic_istream<CharType,CharTraits>& in); やっぱり無理か。
そのテンプレート作っていい?w
>>875 いいよ。 ']' 実装しようとしたら InputIterator じゃ無理だな。
s/InputIterator/ForwardIterator でどうぞ。
>>876 ちょっと燃えてきました。(`・ω・´)
878 :
877 :2006/10/09(月) 17:04:43
暇ができたので作ってみた。 メモリの型をint,floatにしてみて、Hello, World!を実行してみたら、 数字ばっかり表示された。 あたりまえか('д`;) もうちょっと抽象化してみる。
だれかアセンブリをBFにコンパイルしる。
アルファベット = BASIC 日本語 = Perl ハングル = BrainFuck
,[.,] ラインバッファの実装に限る
携帯のflashアプリで最近BFしてるが、結局文字表示だけしかできないの? それともPCだと夢が広がるの?
入出力命令が文字しか扱えない
つまり鯖が作れるな。webアプリも作れるな。 うはwwwwwwww夢が広がりんぐwww
特定のメモリ空間をVRAMに割り当てればいい。
VRAMって直接いじれるのか……。 あれ、ああそうか。転送すればいいのか。
難解言語と自称してるくせに制御構造にgotoがないなんてお粗末だな。
何も言いません
889 :
デフォルトの名無しさん :2006/11/10(金) 22:54:39
今日もfuck♪
昨日はいざという時に中折れしてしまい、帰って一人でbrainfuck
891 :
デフォルトの名無しさん :2006/11/14(火) 23:46:23
BFで「自分自身のコードを出力するプログラム」は書けない?
893 :
デフォルトの名無しさん :2006/11/25(土) 02:46:10
たしざん > >>++++++[<++++++++++>-]<+++> >++++++[<++++++++++>-]<+++++.<.<<,.> >> >+++++++ +++. <+.<.<,.> >>.<<[-]>[-]>[-]<++++++[<++++++++>-]<[<<-> >-]>++++++[<++++++++ >-]<[<->-]<<[> >+>+<<<-]> >>[<<<+> >>-]<<[> >+>+<<<-]> >>[<<<+> >>-]<[<+>-]++++ ++[<++++++++>-]>++++++[<++++++++++>-]<+++++> >++++[<++++++++++>-]<+++> >++++++[ <++++++++++>-]<++++++> >++++++[<++++++++++>-]<+<<<.>.>.>.<<<<.
894 :
デフォルトの名無しさん :2006/11/25(土) 19:37:42
BrainFuck から、どうにかして関数を呼び出したい このままでも良いのかもしれないけど、OS 叩けないとまともな物が作れないス(´・ω・`) なんか良い仕様が出来ないものか……
誰か>894を夢から覚ましてやれよ
>>894 たしかにBFは高級すぎるよな
もちろんBoyFriendじゃない
BoyFuckでもない
>>894 BrainFuckでOSから作ればいいのでは?
>>894 自分でBrainFuck環境作って拡張すれば?
x86のLinuxなら、mem[-1..-4]がeax、mem[-5..-8]がebx…と対応を決めておいて、 拡張命令「!」でint $0x80を発生させるとか。
API呼び出しのエスケープシーケンスとかを決めてやればいいんじゃない? 出力データをどう処理するかはOSの管轄なのでBFとしては拡張無しですむ。
BF でプログラムを出力して、それを実行するとか。
com2txtみたいで面白いな。
com2txtみたいで面白いな。
CPLD買ったのでBFを実行できるCPUすぐ作れそうです
モールス信号みたいな言語だな (藁
906 :
デフォルトの名無しさん :2007/01/27(土) 17:33:06
で、??
でっていう
908 :
デフォルトの名無しさん :2007/02/11(日) 17:05:35
age
909 :
デフォルトの名無しさん :2007/04/05(木) 02:11:52
BrainF*ck じゃなくて UnLambda の話題なんですが、v 関数を ski だけで作ろうと思い立ち 何となく `Yk がそれっぽそうな雰囲気なんでとりあえず Y = ^f^p$f^a``$p$p$a^p$f^a``$p$p$a => ``s`kki``s``s`ks``s``s`ks`ki`ki``s`kki``s``s`ks``s``s`ks`ki`ki みたいに Y コンビネータを作って実行してみたんですが、なんか v 関数とは挙動が違いました。 だれか答えかヒント教えてくださいな。
あ、ごめん。変換が違ってたっぽい。よく分からんが。 Y = ``s`kki``s``s`ks`ki`ki``s`kki``s``s`ks`ki`ki けど、これでも違うみたいなんよ……。どこでバカやってんだろ。
912 :
デフォルトの名無しさん :2007/04/06(金) 17:24:30
SK より凄いやつがあった:その名は Iota と Jot
Iota and Jot: the simplest languages?
http://ling.ucsd.edu/~barker/Iota/ どちらも SK を簡素化したやつで2種類のシンボルを並べるだけなんだが、
とくに Jot では{0,1}列を「適当に」並べるだけで「正しい」構文になる、
つまりシンタックスエラーにならない、という仰天の言語仕様だ。
913 :
デフォルトの名無しさん :2007/04/06(金) 21:08:49
やっと
>>1 から読んだが、なかなか面白そうだな。
コレ使って、どんなソフトを作ってくれるか楽しみだ。
誰かに作ってもらうのが前提なのか
自分でやってみないと面白くないよ、と914は申しております。
BFほど実行環境数>>>>ソースコード数な言語はない
917 :
デフォルトの名無しさん :2007/04/08(日) 12:57:19
<[+-]> ,,,,,,,,
918 :
デフォルトの名無しさん :2007/04/08(日) 14:38:59
++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. ++.--------------.++++++++.----. ++++++++++.-----------------------------------------------------------------------... +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. .----.--..-----.+.++++++++++++++.++. 後悔は、、、してない。
919 :
デフォルトの名無しさん :2007/04/08(日) 21:34:40
チューリングマシン?
920 :
デフォルトの名無しさん :2007/04/09(月) 02:47:49
ファイル読み込みと、ファイル書き込みと、shell関数相当の命令が欲しいな。 命令の種類が増えると美しくなくなるけど…
標準入出力で良ければ、そこに流し込めばいいのですが。
リダイレクトすればいいじゃない。
><を→←↑↓に変えた2D BrainFuckキボンヌ
上のほうで出てる
unicodeに八卦の文字があるので、 各命令文字を置換して眺めて楽しんでるw
926 :
デフォルトの名無しさん :2007/04/10(火) 13:07:43
コンパイラ探したけどろくなのが無いな。 自分で作ったよ。
もちろんbrainf**kでだよね?
928 :
デフォルトの名無しさん :2007/04/10(火) 13:42:15
929 :
デフォルトの名無しさん :2007/04/10(火) 19:40:07
,>>,<, >>++++++[<<-------->>-] +++++[<-------->-]<--- >+<[[-]>-< <[<->-]> ]>[-< <[<+>-]> >]< <<.
930 :
デフォルトの名無しさん :2007/04/13(金) 14:00:08
何も読まずageるよー
931 :
デフォルトの名無しさん :2007/04/14(土) 18:00:08
+ ; * ☆_+ : , xヾ:、__,..-‐‐:、、,へ.........._ く '´::::::::::::::::ヽ /0:::::::::::::::::::::::', = {o:::::::::(´・ω・)::i みんな待って~ ':,:::::::::::つ:::::::つ = ヽ、__;;;;::/ し"~(__)
>931 わー、ちゃんとAAになってる! それ、どんな命令セットのBF?
それにしてもスレタイはうまいことやったよな どう見てもゲームコントローラだ
はじめてきました 面白そうですね
935 :
デフォルトの名無しさん :2007/04/15(日) 16:02:10
∧ <[+-:;,.]> V 位に増えてもいいと思うな。
>935 その形だと、大量の弾幕吐きそうだな ボム打って発射口に飛び込んでいっぱいbuzzりたい
937 :
デフォルトの名無しさん :2007/04/18(水) 17:57:10
文字すくねぇwww
938 :
デフォルトの名無しさん :2007/04/18(水) 22:45:36
メモリ上に自分自身のソースコードをQuineしてから メモリ上のソースをインタプリタするコードって作れないかな・・・
BF-BFインタプリタはどっかに落ちてるから、それを改造するとかかね。 いや、難しそうだな……。
940 :
938 :2007/04/18(水) 23:39:52
>>939 ネストが増える毎にインタプリタの段数が増える再帰関数が作ってみたかったのだが
素直に(もう少し)高級言語で書いた方が楽かな?
aa f**k
http://up.spawn.jp/file/up15900.txt.html C++
sumomomo f**k
、すもも :>
。すもも :<
すもも :+
!すもも :-
のうち!すもも :.
のうち?すもも :,
のうちすもも :[
のうち。すもも :]
も 直前の命令と同じ命令に置換される
このコード体系で書くプログラムは+から始める事を推奨。
hello worldは略
ところで、同一メモリアドレスにBFコードとメモリを置きたいのなら
プログラムコード、ヌル文字、(普通のBFで言う)メモリの先頭アドレス、
の順に配置すれば良いんじゃね?ヌル文字を実行した時点で終了、とすれば
既存のコードも問題なく動くし。
<<[<]>[.>]\0Hello, World!\n
プログラム中に文字列リテラルを仕込めるのは反則っぽいがw
>>629-646 のような実装なら、ヌルとか持ってこなくても単に ] でプログラムの終了ができるね
942 :
938 :2007/04/19(木) 00:21:51
自己書き換え可能にするとコード中の[]が動的に書き換えられる可能性があるから スタックに積んでおく手法は残念ながら使えない。 あと、さっきの発言の「C++」は、C++のソースコードとして直接仕込むようにした、 と言いたかっただけだからあまり気にしないでくれ。
なんか良くわかんないや。 interpretする言語とされる言語をはっきり明記してくれんと……。 俺は最初両方BFと思ったけど、C++出てきたからどうやら違うようだし。
944 :
938 :2007/04/19(木) 01:30:22
BFでメモリ上にQuine→メモリ内をBFでインタプリタ、 というプログラムを書けば後は無限に多段インタプリタを行うようになるな、 と思ったのだが、プログラムカウンタとポインタを管理するための領域が必要だから 2バイトに1命令という配置になっていなければインタプリタ出来ないようだ。 しかし、メモリ上にQuineするのって標準出力と比べて遥かに難しいな・・・ 「C++」はただのaa f**kの説明・・・を書く途中で送信しただけ
インタプリタは道具の名前だろうが。
946 :
デフォルトの名無しさん :2007/04/20(金) 18:53:03
学校の休み時間中ノートの上で脳内インタプリタ働かせて Brainfuckやってたんだが、 友達に「なにやってんのー?」って聞かれたから 「Brainfuck」って言ったら結構引かれた。 ってわけで、Brainfuckのかっこいい和名考えない?
「脳姦」以外に考えられない!
パズルやってるっていえばいいのに
脑奸 (nao3 jian1)
953 :
デフォルトの名無しさん :2007/04/20(金) 21:59:46
C-
のーみそこねこね。
957 :
デフォルトの名無しさん :2007/04/22(日) 08:30:33
>>956 もうとっくに消えてるorz
もうしわけないが、再うpしてくれないか。
>>958 ありがとうございます!
さっそく居ただきました!
960 :
デフォルトの名無しさん :2007/04/22(日) 16:30:20
Brainfuck追加文字 : 画像のロード ; ロードして画像を出力 例)>:"img\\test.bmp"; > ・・・ メモリ{1}に移動して :"img\\tets.bmp" ・・・ imgフォルダのtest.bmpを読み込む このとき、test.bmpがnバイトとすると、{1}~{n-1}は画像に占領される。 {n}は、画像終了を意味する文字が入る ; ・・・ {1}から{n-1}までの画像データを出力
961 :
デフォルトの名無しさん :2007/04/22(日) 17:14:37
>>946 八則程序編制
八つで組むプログラミングみたいな意味
962 :
,+[-.,+] :2007/04/22(日) 18:06:52
ポインターゴルフ ポインターをこつこつ叩いて、ゴールまで持ってく感じ
>>958 頂きました。
俺もJavaScript実装書いてるのでパクらせ、、、参考にさせてて頂きますw
964 :
デフォルトの名無しさん :2007/04/23(月) 19:25:52
Brainfuck→脳姦→のうかん→脳幹 脳幹 電脳の中でメモリーをこつこつ叩いて、ゴールまで持ってく感じ
ゆとり「のう・・・・・・かん・・・?」
966 :
デフォルトの名無しさん :2007/04/24(火) 17:29:05
ノーコンみたいやね
967 :
デフォルトの名無しさん :2007/04/25(水) 18:20:54
もし次スレを立てるようなことがあるなら、スレタイの< >には注意な < >で
コンパイラやインタプリタばっかり出てコードが出てこない(´・ω・`)
それがこの言語の本質でもあるからな
>>969 付属のhello.bfで試したけど上手くいかないな。
次スレ案 Brainfuck +++++++[>+++++++<-]>+. コピペ用 Brainfuck +++++++[>+++++++<-]>+.
もう少しリーダブルにしろよw ここは品悪く <[+-.,]>BrainFuck 2回戦目 で
いくらなんでも板の風習を無視しすぎ
どんな風習だよ
別に意味あるプログラムにする必要はないじゃん 変に凝ろうとしたり、書き方を変える(Vol.X→X巻 等)のもわかりづらい。 今のスレの次スレということがわかるタイトルにすればよろし。
>>975 全コマンドを列挙してあるんじゃん。
>>973 みたいなのがスレタイにあるほうが嫌やわ。
【<[+-.,]>】Brainfuck【+++++++[>+++++++<-]>+.】
>>980 なんという複合スレタイ…
どう見ても両方の悪いところしか残っていない…
BrainFuck 2 <[+-.,]> でいいじゃん
Brainfuckの文字列があればあとはなんでも良いよ。
984 :
デフォルトの名無しさん :2007/04/30(月) 17:25:30
じゃあ次スレはBF拡張について話そうか。
拡張したらもはやBrainfuckとは言えないのだよ
988 :
969 :2007/04/30(月) 20:40:24
Brainf**ck
>>988 helloworldが
0=DDGSGOGJD<H
とか吐いたんだがこれはなんだ
最近知ったんだけど、これ面白いね まだよく理解できてないけどorz
抽象化した結果表現されるものは、設計者が想定した概念やイメージだ。しかし、 実在するものそのものではなく、人が考えたものであるために、このイメージは 非常に脆く、不安定だ。外部からの影響をもろに受け、形を変え易い。個々人が 持つイメージの些細な相違から認識のずれが生じ易い。扇風機の使い方は人に よって異なることはないが、人がイメージしたものは、その生成から、破棄に至る まで、非常に不安定な状態になり易い。それを防ぐには、イメージそのものをなる べく強固なものにし、インターフェースに一貫性と整合性をもたせ、外因による影響 を受けに難くく、壊れ難くするための技術を見につけ、理解を深めておくしかない。 仮想化とは対象物を不完全ながらもその性質や姿を模倣し現出させることだ。 対して抽象化は、対象物のある特徴的な側面を抽出し概念化することだ。 仮想化で抽象化の技術が使われることはあるだろうが、その逆は考え難い。 コンピュータを使い、扇風機やコタツを抽象化することはできても、仮想化する ことはできないのだ。少なくとも今の技術では無理だ。コンピュータがその姿形 を変えることはできないのだから。コンピュータが仮想化できるものは、コンピュー タそのものが直接扱うものだけだ。例えば、仮想メモリ、仮想ネットワーク、仮想 マシン、仮想キーボードといったものだ。
>992 「BrainFuck状態な人の発言」なら、ちゃんとBFのコードで語るハズだ
とりあえず、日本語喋れるBFに拡張しようぜ。
995 :
デフォルトの名無しさん :2007/05/01(火) 11:38:53
BFで書かれたBFコンパイラとかよくあるけどあれの使い方が分かんない
996 :
デフォルトの名無しさん :2007/05/01(火) 11:57:44
999ならナナリンはオレ(ンジ)のもの
997 :
デフォルトの名無しさん :2007/05/01(火) 11:59:23
999なら(戦艦)長門は俺の嫁
>>995 そのBFコンパイラを別のコンパイラでコンパイルして、標準入力からBFコードを食わせるんだ。
1000ならみんなでたのしくBrainfuck
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。