Prolog でまったり
■ このスレッドは過去ログ倉庫に格納されています
0001人工無能
NGNGそんなPrologについてまったり話しましょう
0357デフォルトの名無しさん
NGNG0358デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNGママンのtitsでも吸ってろ!
0361デフォルトの名無しさん
NGNGJavaからPrologを利用できる
0363デフォルトの名無しさん
NGNG冗談にしてはつまらないな。
もうちょっとまともな事書けばと思ってしまった。
参考になればいいけど
0364bloom
NGNGhttp://www.agemasukudasai.com/bloom/
0365356です
NGNG西門#さん
ありがとうございます。
Warren's Abstract Machine<A TUTORIAL RECONSTRUCTION>[wambook.pdf]の
「Prolog in a Nutshell 91」
「The WAM at a glance 97」
がよさそうですね。日本語の文献がよかったんですが、なさそうなので
とりあえずこれを読んでみます。
ありがとうございました。
0366デフォルトの名無しさん
NGNGためしに作ってみたんだけど、あまりにも簡単すぎて。
これでいいのかな。
0367デフォルトの名無しさん
NGNG0368デフォルトの名無しさん
NGNGまさか Brainfuck で書いてないよね?
0369デフォルトの名無しさん
NGNGhttp://pauillac.inria.fr/~diaz/gnu-prolog/ から取れます。
何でもPrologプログラムをCプログラムにコンパイルしてくれるようで楽しみ。
0370デフォルトの名無しさん
NGNG0371デフォルトの名無しさん
NGNGその会話サンクス
ちょーど質問しよーとしてたとこだた
0372デフォルトの名無しさん
NGNGただ動くだけのインタプリタなら、100行足らずで書けるよね。
効率よく動かそうと思うと1万行とかになるけど。
0373デフォルトの名無しさん
NGNG何が出来ればprologなの?
0374デフォルトの名無しさん
NGNG自分、prologすらつかったことありません・・・
0375デフォルトの名無しさん
NGNGhttp://www.ece.pdx.edu/~mperkows/CLASS_ROBOTICS/LISP/tanimoto/PROLOG.CL
とか?
もっと短くなりそうですけどね。
Horn節のresolutionができればPrologなんじゃない?
0376デフォルトの名無しさん
NGNGやはりSicstus Prologでは?
0377デフォルトの名無しさん
NGNGSicstusはQuintusの模造品。
0378デフォルトの名無しさん
NGNGexecute(P) :- predicate_property(P, built_in), !, P.
execute(P) :- my_clause((P :- Q)), execute(Q).
3行で書けたよ。
0379デフォルトの名無しさん
NGNGC言語しかわからない。・゚・(ノД`)・゚・。 うえええん
0380デフォルトの名無しさん
NGNGPrologをCへコンパイルするコンパイラを
Prologで書けばよい。きっと百行で書ける。
0381デフォルトの名無しさん
NGNGありませんでしょうか?
ラインエディタでは使いにくくて・・・・
外部でエディットしてconsult('filename'). 使ってファイル読み込めばいいのですけどね。
0382デフォルトの名無しさん
NGNG0383デフォルトの名無しさん
NGNG0384デフォルトの名無しさん
NGNG0385デフォルトの名無しさん
NGNGそれを使ってC→Prologの変換もできるよね?
0386デフォルトの名無しさん
NGNG親(ママ,花子).
兄弟(X,Y) :- 親(P,X),親(P,Y).
?- 兄弟(太郎,X)
太郎
兄弟(X,Y) :- 親(P,X),親(P,Y),X\=Y.
?- 兄弟(太郎,X)
花子
今はこれが精一杯。
0387デフォルトの名無しさん
NGNG性別をfactに持たせて、叔父、叔母、その他いとこやおじいさんおばあさんも
作ってみよう。
0388デフォルトの名無しさん
NGNGただの否定じゃ駄目なの?
0389デフォルトの名無しさん
NGNGバックトラックで問題にならないのかな。
0390デフォルトの名無しさん
NGNGnot_p(x) :- p(x), !, fail.
not_p(x) :- true.
cutがないと、上の節は必ず失敗するが、下の節があるので
結局かならず成功してしまう。
あと、双方向性がいらないときや、非決定性がいらないとき、
cutを使うと効率が良くなる。
>>389
問題になるよ。
副作用を使ったら、cutと同じく、双方向性や
非決定性が制限される。
0391デフォルトの名無しさん
NGNG0392デフォルトの名無しさん
NGNG勝手にバックトラックして変な解まで見つけてしまうことがある。
それとか、最初の一つの解が見つかった所で処理を止めて次
に移りたい時とか。
0393デフォルトの名無しさん
NGNG> 激しくなつかすぃ「Prologの冒険」
> http://www.amzi.com/AdventureInProlog/
日本語翻訳本は絶版っぽいので、がんばって読み始めました。
激しく面白いです。
はやくパズルとかを解けるようにがんばります。
教えてくれてありがとう!
0394デフォルトの名無しさん
NGNG図書館にあるよ
0395デフォルトの名無しさん
NGNG0396356です
NGNGブラトコ(?)の本(多分「Prologの技芸」)にパスカルのサブセットを
マシン語にコンパイルする例があったと思うけどやたら簡単だった。
1日も必要ない。1時間もあれば理解できるじゃないかな?
0397356です
NGNG松田利夫 訳の本でした。ちなみに共立出版です。
(えっ、知ってた?)
0398356です
NGNGlispは簡単にprologを構築できると聞いたことがあるのですが、
そのあたりご存知な方いらっしゃいますか?
0399デフォルトの名無しさん
NGNG>>375
0400デフォルトの名無しさん
NGNGLISPのは、ちょっと厚い本には大抵載ってるよ。
>>375のは主要なオペレータが揃ってなかったり不完全な気がするけど。
schemeもschelog(本体はschemeコードで500行程度)
つーのがあったり、
SICPというschemeを例にしたアルゴリズム教科書に、
非決定性や論理型プログラミングの解説がある。
0401デフォルトの名無しさん
NGNGLispで書いたPrologインタプリタを使ってたと思う。
だから、例題も全部Lisp風の文法。
0402デフォルトの名無しさん
NGNGサンプルプログラム読むとふむふむと理解でき(た気になれ)るけど
いざ自分で書こうとすると何書いていいかわかんなくなる
0403デフォルトの名無しさん
NGNGとりあえずHello World的なプログラムを試してみたいんですが。
0404403
NGNG[../demo/likes].
とは書けないのね。
?- cd(../demo)
?- [likes].
でうまくいきました。
0405デフォルトの名無しさん
NGNGこれなんかけっこう簡単な割には
機能的には充分だと思うんだけど、どうかな?
0406デフォルトの名無しさん
NGNGCやJavaの方がまだマシだよ。ってかCとかJavaに慣れちゃってる人には
Prologって根本的に違うからわかりづらいね。
基本的なことはわかったけど、どう応用してよいのやらわからんよ。
「Prologへの入門」あべ著にあったプログラムをコピペしても走らなかったりするしさ〜
同じような境遇の人いたら同情しまっせ。
0407デフォルトの名無しさん
NGNG0408引き篭もり
NGNG0409デフォルトの名無しさん
NGNG0410406
NGNGテーマは強制的です。やりたくてやってたんじゃないんですよ〜
ちゃんと初めはやりたいことあったんですが「駄目だ!」と一蹴。
「うちの研究室では初めての分野だし・・・」とあーだこーだと
論点すりかえて説得され続けるのがいやになってあきらめたんです。
ツッコミ入れると面白いくらいあせってつくろうし。ガキみたいな教授です。
って愚痴ってしまってすいません。
がんばりますよ!
0411デフォルトの名無しさん
NGNGこんなとこで愚痴たれるお前の方がガキだろ。
いやなら教授殴ってやめちまえ。
0412デフォルトの名無しさん
NGNG差分リスト以外は
0413デフォルトの名無しさん
NGNGやらせようとすると脳内シミュレートが重荷で大変だと思った。
0414デフォルトの名無しさん
NGNG困難から逃げるのが好きな漏れはProlog絡みの卒研を履修放棄した。
0415デフォルトの名無しさん
NGNGテーマの内容は何?
0416デフォルトの名無しさん
NGNGどうしていいかよくわかりません。
誰か救いの手をお願いします。
0417デフォルトの名無しさん
NGNG既存の処理系のソース読破汁!!
0418デフォルトの名無しさん
NGNG0419デフォルトの名無しさん
NGNGGNU-Prologのソースコードなら
http://gnu-prolog.inria.fr/
にあるじゃん。
0420デフォルトの名無しさん
NGNG>>417
>読破汁!!
2ちゃん語って非常に気持ち悪いんだけど、慣れないと駄目ですか?
0421デフォルトの名無しさん
NGNG2ちゃんねる見なきゃ大丈夫。
0422デフォルトの名無しさん
NGNG0423デフォルトの名無しさん
NGNG2ちゃん語なんてものはありません。
ただ日本語すらまともに使えていないバカが多いだけです。
0424デフォルトの名無しさん
NGNG0425デフォルトの名無しさん
NGNG0426デフォルトの名無しさん
NGNG0427デフォルトの名無しさん
NGNG0428デフォルトの名無しさん
NGNG0429Prolog
NGNG0430デフォルトの名無しさん
NGNGあれってprologで実装するもの?
0431416
NGNGある程度作って、だいたい動くようになったのですが
バックトラックが上手く実装できていないのと、
あと
test(A,A).
test1(A,B):-test(A,C),test(B,C),A=1.
の単一化を実現する上手い方法が思いつきません。
誰かバックトラックの実装方法と
上記の単一化を実現する実装方法を教えてください。
0432デフォルトの名無しさん
NGNG何が知りたいのかわからないけど、
prologのバックトラックは、パターン内の節を順に適用していって、
失敗したら他のパターンを試す処理。
これはパターンと節の二次元のテーブルで済む筈。
単一化は未確定の変数に対して値を代入する処理。
>test(A,A).
>test1(A,B):-test(A,C),test(B,C),A=1.
Aを仮に1としてパターンtest1を評価すると、
変数の初期値はA=1 B=? C=? (?は未確定)
最初の節test(A,C)からA=Cが確定(単一化)してC:=1、
testは無条件に真なのでバックトラックせずに継続、
次の節test(B,C)からB=Cが確定(単一化)してB:=1、
testは無条件に真なのでバックトラックせずに継続、
次の節A=1がtrueなのでYesが返る。
Aが1以外なら、パターンtest1の最後の節A=1で失敗し、
バックトラックに入るが、可能な他のパターンが無いのでNoが返る。
という説明じゃ駄目?
0433デフォルトの名無しさん
NGNG自信ないけど、アルゴリズムデバックじゃなく
アルゴリズミックデバッギングのように表記しない?
Prologで実装というより、対象がPrologのプログラム(というのが発祥)
なんじゃないかな。実装は特にPrologじゃなくてもいい気がする。
Prologで実装して特に楽になる部分あるかなあ。
0434デフォルトの名無しさん
NGNGこの実装だと死ぬな。
ある節がfalseを出した時、どこまで戻すかの記録が微妙。
代入のデータとスタックを使うのが普通かと。
>Aを仮に1としてパターンtest1を評価すると、
アフォ?
test1(A,B).
と質問した時、prologは
どうやってA=1,B=1
を見つけて来るんだよw
という俺もよくわからないけど、
内部でA=C,B=Cという表現を作ってるんだと思う。
0435デフォルトの名無しさん
NGNG-----------fib.pl------------
fib(0, 0).
fib(1, 1).
fib(N, F) :- N > 1, N1 is N-1, fib(N1, F1), N2 is N-2, fib(N2, F2), F is F1+F2.
-----------fib.pl------------
?- [fib].
% fib compiled 0.00 sec, 748 bytes
Yes
?- fib(30,X).
ERROR: Out of local stack.
うーむ。
0436デフォルトの名無しさん
NGNGfib(0, 0):-!.
fib(1, 1):-!.
とcutを入れればよいだろう。でも、ふつーは
fib(N, _):-N < 0, !, fail.
fib(N, F):-ifib_loop(N, 0, 0, 1, F).
ifib_loop(N, N, A, _, A).
ifib_loop(N, X, A, B, F):-X1 is X + 1, AB is A + B, ifib_loop(N, X1, B, AB, F).
とやる。
0438デフォルトの名無しさん
NGNGcutがないと、fib(0,0)にいったん成功して、その後バックトラックする時に
下の選択肢を探すことになる。(そのための情報がスタックに積まれる。)
でも、fib(0,0)に成功したならば、下の選択肢は無意味なので、cutで取り除い
てやる。
0439デフォルトの名無しさん
NGNG0440デフォルトの名無しさん
NGNG実際には、cut無しでは実用的なプログラムが書けない。
0441デフォルトの名無しさん
NGNG制御が無いと駄目でしょ。
0442デフォルトの名無しさん
NGNGフィボナッチを分割統治とは渋いな。
っていうか何がうーむなのか。
0443デフォルトの名無しさん
NGNGファイル入出力は無くてもいいからね。
関数としてはカットは不要だと思う。
0444デフォルトの名無しさん
NGNGいや定義式どおりのありふれたアルゴリズムなんだけど。
指数オーダーなので実用には使っちゃ駄目なんだけど。
>>443
ファイル入出力がいるプログラムもあるんだけど。
関数じゃないんだけど。
0445デフォルトの名無しさん
NGNG計算論知ってる?
帰納関数知ってる?
0446デフォルトの名無しさん
NGNG知ってますが何か?
0447デフォルトの名無しさん
NGNG0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNG0450デフォルトの名無しさん
NGNGお前らに見せる価値はありますか?
0451デフォルトの名無しさん
NGNGワショーイ!!
0452デフォルトの名無しさん
NGNGそんなこと言われても(´・ω・`)ショボーン
見てみないと価値なんかわからないっす。
0453デフォルトの名無しさん
NGNGインタプリターの価値じゃなくて、
評価してもらう価値あるかって事では?
まあ、俺はたぶん読めるだろうけど
過去ログからもわかるように
バックトラックの実装すらよくわかってない奴が
ほとんどだと思うから
ここで公開しても、へたれコメントしか出てこないと思われ。
そもそも自分でインタプリター作れる奴はそれ程多くないし、
2chにはたぶんいない。
0454デフォルトの名無しさん
NGNG7行スレからパクッたのか?
0455デフォルトの名無しさん
NGNG0456デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています