Prolog初心者のスレ
これは良い言語だ…
探検
【論理】Prolog【初心者】
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2010/11/06(土) 13:00:56946デフォルトの名無しさん
2020/06/05(金) 11:21:23.43ID:p2r1F5vv てかPrologスレってもう一個あるんだけどどっちかに統一しないか?
ただでさえ人少ないのに2つもいらんだろ
↓こっちの方が人多そう
http://itest.5ch.net/mevius/test/read.cgi/tech/1490334702
ただでさえ人少ないのに2つもいらんだろ
↓こっちの方が人多そう
http://itest.5ch.net/mevius/test/read.cgi/tech/1490334702
947デフォルトの名無しさん
2020/06/05(金) 12:48:16.98ID:VSGBAHWN 今朝 7 時過ぎに某知恵袋にこんな投稿があった。
A : B は嘘つき
B : A か C が嘘つき
C : A が嘘つき
誰が嘘つきなのか調べるプログラムを書いてくれ
Prolog で書いてる間にこの投稿は削除された。
仕方ないからこっちに貼っておく。
evi_a( Liar) :- member( b/1, Liar).
evi_b( Liar) :- member( a/1, Liar) ; member( c/1, Liar).
evi_c( Liar) :- member( a/1, Liar).
p_evi( Liar,[]) :- write( Liar),nl.
p_evi( Liar,[P/Evi|T]) :-
G =.. [Evi,Liar],
( member( P/1, Liar) -> \+( G) ; G),
p_evi( Liar,T).
p_ml([]).
p_ml([[A,B,C]|T]) :-
Liar = [a/A,b/B,c/C],
( p_evi( Liar,[a/evi_a,b/evi_b,c/evi_c]) ; true ),
p_ml( T).
main :-
p_ml([[0,0,0],[0,0,1],[0,1,0],[0,1,1],[1,0,0],[1,0,1],[1,1,0],[1,1,1]]).
A : B は嘘つき
B : A か C が嘘つき
C : A が嘘つき
誰が嘘つきなのか調べるプログラムを書いてくれ
Prolog で書いてる間にこの投稿は削除された。
仕方ないからこっちに貼っておく。
evi_a( Liar) :- member( b/1, Liar).
evi_b( Liar) :- member( a/1, Liar) ; member( c/1, Liar).
evi_c( Liar) :- member( a/1, Liar).
p_evi( Liar,[]) :- write( Liar),nl.
p_evi( Liar,[P/Evi|T]) :-
G =.. [Evi,Liar],
( member( P/1, Liar) -> \+( G) ; G),
p_evi( Liar,T).
p_ml([]).
p_ml([[A,B,C]|T]) :-
Liar = [a/A,b/B,c/C],
( p_evi( Liar,[a/evi_a,b/evi_b,c/evi_c]) ; true ),
p_ml( T).
main :-
p_ml([[0,0,0],[0,0,1],[0,1,0],[0,1,1],[1,0,0],[1,0,1],[1,1,0],[1,1,1]]).
948デフォルトの名無しさん
2020/06/05(金) 15:03:37.36ID:+2GKliP9949デフォルトの名無しさん
2020/06/05(金) 22:46:33.92ID:VLb22M2N Prologが何かわからないので誘導されて
1レスから943レスまで目を回してみたけど
初心者向けなんですかここ?
何をどうするプログラムなのかが
ジャンルすら不明でまったく意味不明です。
まずPrologは何が何でPrologの
ハローワールドの実行方法を教えてください。
1レスから943レスまで目を回してみたけど
初心者向けなんですかここ?
何をどうするプログラムなのかが
ジャンルすら不明でまったく意味不明です。
まずPrologは何が何でPrologの
ハローワールドの実行方法を教えてください。
950デフォルトの名無しさん
2020/06/06(土) 12:00:17.93ID:qHMuyDwQ :- writeln('hello world'),halt.
951デフォルトの名無しさん
2020/06/06(土) 13:34:07.16ID:nPYA670X >>949
knowledge base(=factとrule)を書いてそれに対してqueryを投げて答えを得る
そういうスタイルで書く言語
原理的にはパターンマッチとbacktrack
論理パズルや組み合わせ問題なんかは比較的簡単に書ける
(が他言語でsolverを使う場合に比べると遅いことが多い)
http://www.learnprolognow.org/lpnpage.php?pagetype=html&pageid=lpn-htmlse1
↑このチュートリアルを読みつつ
↓ここで試すといい
https://swish.swi-prolog.org/
knowledge base(=factとrule)を書いてそれに対してqueryを投げて答えを得る
そういうスタイルで書く言語
原理的にはパターンマッチとbacktrack
論理パズルや組み合わせ問題なんかは比較的簡単に書ける
(が他言語でsolverを使う場合に比べると遅いことが多い)
http://www.learnprolognow.org/lpnpage.php?pagetype=html&pageid=lpn-htmlse1
↑このチュートリアルを読みつつ
↓ここで試すといい
https://swish.swi-prolog.org/
952デフォルトの名無しさん
2020/06/07(日) 02:24:51.84ID:Yd5U2TwL >>950
ありがとうございます。なるほど1行でハロワ書けるんですか、でもそれでゲームのNPCにどうやって自然言語処理するのに使うんでしょうか?
プログラムなんて変数配列とif分岐とfor繰り返しでほぼ全て出来てると聞きましたけど、
それとは違うなんかデータの塊のような
Prolog ってヘンテコな変わったプログラミング言語なんですね。
六法全書読み込んで判例教えたら判決が出力されるんですか?
>>951
MySQLとかPythonのプロンプトような感じでしょうか?
コンソールで問い合わせて答えを得る的な基本CUI?
データベースのようなデータベースと違うようなイライザのようなチャット?
クエリー?エキスパートシステムの雛形?
第一引数にファイル渡すと読み込むんでしょ?
これはコマンドラインで引数渡して戻り値を取得する見たいに出来ないんですかね?
HTMLのActiveXからJScriptで受け取ったりとか
ありがとうございます。なるほど1行でハロワ書けるんですか、でもそれでゲームのNPCにどうやって自然言語処理するのに使うんでしょうか?
プログラムなんて変数配列とif分岐とfor繰り返しでほぼ全て出来てると聞きましたけど、
それとは違うなんかデータの塊のような
Prolog ってヘンテコな変わったプログラミング言語なんですね。
六法全書読み込んで判例教えたら判決が出力されるんですか?
>>951
MySQLとかPythonのプロンプトような感じでしょうか?
コンソールで問い合わせて答えを得る的な基本CUI?
データベースのようなデータベースと違うようなイライザのようなチャット?
クエリー?エキスパートシステムの雛形?
第一引数にファイル渡すと読み込むんでしょ?
これはコマンドラインで引数渡して戻り値を取得する見たいに出来ないんですかね?
HTMLのActiveXからJScriptで受け取ったりとか
953デフォルトの名無しさん
2020/06/07(日) 14:20:37.65ID:1jUe1e78 if と for を使う、普通のプログラミング言語としても使えるよ
if は違うゴール節に入る
for はすべて再帰で書く
それだけのこと
if は違うゴール節に入る
for はすべて再帰で書く
それだけのこと
954デフォルトの名無しさん
2020/06/07(日) 19:52:04.82ID:4Q/izaPV 言語を作った人達ですらappendの意味を理解できなかったらしいからな。
955デフォルトの名無しさん
2020/06/08(月) 02:35:20.50ID:OD6feMKZ Prologを使ったアイデアがいっぱい出てくる
機械学習の可能性に疑問を持ち始めた今こそコレだ!って感じがする笑
これからのテーマは「機械学習じゃ出来ないことをPrologでやろう」だな
因果関係とか戦略的意志決定とか胸が熱くなるんだが笑
機械学習の可能性に疑問を持ち始めた今こそコレだ!って感じがする笑
これからのテーマは「機械学習じゃ出来ないことをPrologでやろう」だな
因果関係とか戦略的意志決定とか胸が熱くなるんだが笑
956デフォルトの名無しさん
2020/06/08(月) 03:13:29.00ID:9sdXvh+T >>955
http://www.iluminado.jp/
その辺のシンボリックAIは80年代、90年代前半に色々検証されてBRMSに名前を変えて残っている。
結局、ブラックボックスになってメンテができないとか、データの精度がとか今の機械学習とおんなじ過ちを30
年前もやっている。
http://www.iluminado.jp/
その辺のシンボリックAIは80年代、90年代前半に色々検証されてBRMSに名前を変えて残っている。
結局、ブラックボックスになってメンテができないとか、データの精度がとか今の機械学習とおんなじ過ちを30
年前もやっている。
957デフォルトの名無しさん
2020/06/08(月) 03:58:01.65ID:OD6feMKZ >>956
なるほどBRMSか
JBoss BRMSとかいうのを調べたがWebとか色んな分野で使われててかなり面白そうだな
結局、Prologの立ち位置としてはそういうのとか他の色んなアルゴリズムの教育用途に適してるかもって思ったわ
簡潔に書けるし、アルゴリズムの教育に持って来いだな
小学校でヴィジュアルプログラミングとかやってる場合じゃねぇ!w
なるほどBRMSか
JBoss BRMSとかいうのを調べたがWebとか色んな分野で使われててかなり面白そうだな
結局、Prologの立ち位置としてはそういうのとか他の色んなアルゴリズムの教育用途に適してるかもって思ったわ
簡潔に書けるし、アルゴリズムの教育に持って来いだな
小学校でヴィジュアルプログラミングとかやってる場合じゃねぇ!w
958デフォルトの名無しさん
2020/06/08(月) 07:17:09.08ID:9sdXvh+T959デフォルトの名無しさん
2020/07/29(水) 07:26:24.50ID:SoSaYlfN iZ-Cのサンプルプログラム書き始めたので見てね。
sunasunax.hatenablog.com
sunasunax.hatenablog.com
960デフォルトの名無しさん
2020/08/02(日) 08:15:30.30ID:W4wBIQXC961デフォルトの名無しさん
2021/12/03(金) 21:44:45.76ID:E2QPyYLa A: Dはうそつきです
B: AとDのどちらかは本当のことを言っています
C: Bの言っていることは本当です
D: 私はうそつきではありません
正直者は必ず本当のことを言っています。
うそつきは必ずうそをつきます。
うそつきはいったい誰?
↑この問題って高階述語になるから一階述語論理しか扱えないPrologでは解けないって理解でいいの?
そうだとしたら現代ではコンピューターでどうやって解くの?
B: AとDのどちらかは本当のことを言っています
C: Bの言っていることは本当です
D: 私はうそつきではありません
正直者は必ず本当のことを言っています。
うそつきは必ずうそをつきます。
うそつきはいったい誰?
↑この問題って高階述語になるから一階述語論理しか扱えないPrologでは解けないって理解でいいの?
そうだとしたら現代ではコンピューターでどうやって解くの?
962デフォルトの名無しさん
2021/12/03(金) 23:00:48.21ID:Oj6t+xnM prologは高階述語も書けるよ
963デフォルトの名無しさん
2021/12/04(土) 06:16:48.61ID:CAsz35to >>962
実装選ぶ必要ありますか?どれでも可能?
実装選ぶ必要ありますか?どれでも可能?
964デフォルトの名無しさん
2021/12/04(土) 07:37:52.32ID:RAd/NC6B よく分からんけど高階論理は不要で、制約論理で解けるんじゃないか
https://www.swi-prolog.org/pldoc/man?section=clpb
Aの発言は Aが真ならDは偽、Aが偽ならDは真という制約になり、これは A=:=(~D) と表せる
Bの発言は B=:=(A+D)、Cの発言は C=:=B、Dの発言は D=:=D と表せる
まとめると ?- sat((A=:=(~D)) * (B=:=(A+D)) * (C=:=B) * (D=:=D)). となり答は
B = C, C = 1, sat(A=\=D). となる
これはBとCは正直、AとDのうち一人は正直でもう一人は嘘つきだけどどちらが嘘つきかは分からないということ
https://www.swi-prolog.org/pldoc/man?section=clpb
Aの発言は Aが真ならDは偽、Aが偽ならDは真という制約になり、これは A=:=(~D) と表せる
Bの発言は B=:=(A+D)、Cの発言は C=:=B、Dの発言は D=:=D と表せる
まとめると ?- sat((A=:=(~D)) * (B=:=(A+D)) * (C=:=B) * (D=:=D)). となり答は
B = C, C = 1, sat(A=\=D). となる
これはBとCは正直、AとDのうち一人は正直でもう一人は嘘つきだけどどちらが嘘つきかは分からないということ
965デフォルトの名無しさん
2021/12/04(土) 23:56:43.15ID:CAsz35to ありがとうございます
文章題からこの制約を書き下せる自信がない…(|||´Д`)
文章題からこの制約を書き下せる自信がない…(|||´Д`)
966964
2021/12/06(月) 19:23:33.90ID:JCSphZpm >>965
正直者は必ず本当のことを言い、うそつきは必ずうそをつくという条件があるので
Aが正直者であるかどうかとAが言っていることが正しいかどうかの真偽は同じになるということで、それを制約論理の式で表すだけ
A=:=(~D)は、A(Aが正直者であること)と(~D)(Aの発言内容「Dは嘘つきだ」)の真偽が一致している(=:=)ということ
Aが真なら(~D)も真だし、Aが偽なら(~D)も偽
他の3人についても同様
これをリンク先にある制約論理で表す
0 偽
1 真
~P not P
P*Q P and Q
P+Q P or Q
P=<Q PならばQ
P=:=Q PとQの真偽は同じ
P=\=Q PとQの真偽は異なる
正直者は必ず本当のことを言い、うそつきは必ずうそをつくという条件があるので
Aが正直者であるかどうかとAが言っていることが正しいかどうかの真偽は同じになるということで、それを制約論理の式で表すだけ
A=:=(~D)は、A(Aが正直者であること)と(~D)(Aの発言内容「Dは嘘つきだ」)の真偽が一致している(=:=)ということ
Aが真なら(~D)も真だし、Aが偽なら(~D)も偽
他の3人についても同様
これをリンク先にある制約論理で表す
0 偽
1 真
~P not P
P*Q P and Q
P+Q P or Q
P=<Q PならばQ
P=:=Q PとQの真偽は同じ
P=\=Q PとQの真偽は異なる
967964
2021/12/06(月) 19:33:58.30ID:JCSphZpm 制約論理を使わない(使えない)場合はどうしたらいいんだろ
d:-d.なんて書いても無限ループになるだけだし
d:-d.なんて書いても無限ループになるだけだし
968デフォルトの名無しさん
2022/11/14(月) 14:12:20.00ID:i6KxBWUg >>961-967
こういうのとか
s(A,B,C,D) :-
( A=true; A=false),
( B=true; B=false),
( C=true; C=false),
( D=true; D=false),
( A=true -> D=false ; true),
( A=false -> D=true ; true),
( B=true -> (A=true ; D=true); true) ,
( B=false -> A=false,D=false ; true),
C=B.
考え方は>>966と同じ
>正直者は必ず本当のことを言い、うそつきは必ずうそをつくという条件があるので
>Aが正直者であるかどうかとAが言っていることが正しいかどうかの真偽は同じになる
SWI-Prologで実行したら解は2つ
A = B, B = C, C = true, D = false
A,B,Cが正直者でDが嘘つき
A = false, B = C, C = D, D = true
Aが嘘つきでB,C,Dが正直者
これと同じだな
>これはBとCは正直、AとDのうち一人は正直でもう一人は嘘つきだけど
>どちらが嘘つきかは分からない
こういうのとか
s(A,B,C,D) :-
( A=true; A=false),
( B=true; B=false),
( C=true; C=false),
( D=true; D=false),
( A=true -> D=false ; true),
( A=false -> D=true ; true),
( B=true -> (A=true ; D=true); true) ,
( B=false -> A=false,D=false ; true),
C=B.
考え方は>>966と同じ
>正直者は必ず本当のことを言い、うそつきは必ずうそをつくという条件があるので
>Aが正直者であるかどうかとAが言っていることが正しいかどうかの真偽は同じになる
SWI-Prologで実行したら解は2つ
A = B, B = C, C = true, D = false
A,B,Cが正直者でDが嘘つき
A = false, B = C, C = D, D = true
Aが嘘つきでB,C,Dが正直者
これと同じだな
>これはBとCは正直、AとDのうち一人は正直でもう一人は嘘つきだけど
>どちらが嘘つきかは分からない
969デフォルトの名無しさん
2022/11/15(火) 01:18:50.21ID:26oE0jcj >>968
変えてみた
s2(A,B,C,D) :-
( A=true; A=false),
( B=true; B=false),
( C=true; C=false),
( D=true; D=false),
( A -> D=false ; D=true),
( B -> (A=true ; D=true) ; A=false,D=false),
C=B.
変えてみた
s2(A,B,C,D) :-
( A=true; A=false),
( B=true; B=false),
( C=true; C=false),
( D=true; D=false),
( A -> D=false ; D=true),
( B -> (A=true ; D=true) ; A=false,D=false),
C=B.
970デフォルトの名無しさん
2022/11/15(火) 01:39:59.69ID:26oE0jcj >>969
変えてみた
s3(A,B,C,D) :-
Boolean=[true,false],
( member(A, Boolean)),
( member(B, Boolean)),
( member(C, Boolean)),
( member(D, Boolean)),
( A -> D=false ; D=true),
( B -> (A=true ; D=true) ; A=false,D=false),
C=B.
変えてみた
s3(A,B,C,D) :-
Boolean=[true,false],
( member(A, Boolean)),
( member(B, Boolean)),
( member(C, Boolean)),
( member(D, Boolean)),
( A -> D=false ; D=true),
( B -> (A=true ; D=true) ; A=false,D=false),
C=B.
971デフォルトの名無しさん
2022/11/16(水) 07:59:27.34ID:KZpN7KA1 >>961
R. Smullyanのto mock a mocking birdの前編はこういう問題の宝庫でおすすめ
多分最も影響力のある論理学の啓蒙書だから釈迦に説法かもしれんが
公務員試験でもあるな、これくらいなら表書けば解ける、多分
R. Smullyanのto mock a mocking birdの前編はこういう問題の宝庫でおすすめ
多分最も影響力のある論理学の啓蒙書だから釈迦に説法かもしれんが
公務員試験でもあるな、これくらいなら表書けば解ける、多分
972デフォルトの名無しさん
2022/11/16(水) 09:10:20.86ID:CQNdPPMd 表を書いてみる
s4 :-
writeln("A B C D"),
writeln(""),
Boolean=[true,false],
forall(
( ( member(A,Boolean)),
( member(B,Boolean)),
( member(C,Boolean)),
( member(D,Boolean))),
( ( A->write("T ");write("F ")),
( B->write("T ");write("F ")),
( C->write("T ");write("F ")),
( D->write("T ");write("F ")),
( ( A -> D=false ; D=true),
( B -> (A=true ; D=true) ; A=false,D=false),
C=B
-> writeln("○")
; writeln("×")))).
s4 :-
writeln("A B C D"),
writeln(""),
Boolean=[true,false],
forall(
( ( member(A,Boolean)),
( member(B,Boolean)),
( member(C,Boolean)),
( member(D,Boolean))),
( ( A->write("T ");write("F ")),
( B->write("T ");write("F ")),
( C->write("T ");write("F ")),
( D->write("T ");write("F ")),
( ( A -> D=false ; D=true),
( B -> (A=true ; D=true) ; A=false,D=false),
C=B
-> writeln("○")
; writeln("×")))).
973デフォルトの名無しさん
2023/04/28(金) 14:17:28.49ID:8wk3+eV/ 、
974デフォルトの名無しさん
2023/04/28(金) 14:18:28.04ID:8wk3+eV/ こんばんは
975デフォルトの名無しさん
2023/04/28(金) 14:18:45.43ID:8wk3+eV/ サイフォン
976デフォルトの名無しさん
2023/04/28(金) 14:19:22.07ID:8wk3+eV/ てえすと
977デフォルトの名無しさん
2023/04/28(金) 14:19:35.56ID:8wk3+eV/ 究極のテスト
978デフォルトの名無しさん
2023/04/28(金) 14:19:58.05ID:8wk3+eV/ 。
979デフォルトの名無しさん
2023/04/28(金) 14:20:16.76ID:8wk3+eV/ 。?
980デフォルトの名無しさん
2023/04/28(金) 14:20:31.31ID:8wk3+eV/ マルチメディアってわけですね
981デフォルトの名無しさん
2023/04/28(金) 14:21:01.39ID:8wk3+eV/ え?
982デフォルトの名無しさん
2023/04/28(金) 14:21:07.70ID:8wk3+eV/ マジなのか?
983デフォルトの名無しさん
2023/04/28(金) 14:43:40.60ID:8wk3+eV/ めすや
984デフォルトの名無しさん
2023/04/28(金) 14:43:49.65ID:8wk3+eV/ ファイト
985デフォルトの名無しさん
2023/04/28(金) 15:28:13.87ID:8wk3+eV/ を
986デフォルトの名無しさん
2023/04/28(金) 15:28:19.38ID:8wk3+eV/ ルンバ
987デフォルトの名無しさん
2023/04/28(金) 16:33:24.56ID:1++JLEfi てすや
988デフォルトの名無しさん
2023/04/28(金) 16:33:30.09ID:1++JLEfi マジで
989デフォルトの名無しさん
2023/04/28(金) 20:43:36.57ID:tkMERdaz アドバンス
990デフォルトの名無しさん
2023/04/28(金) 20:56:50.79ID:tkMERdaz テスト
991デフォルトの名無しさん
2023/04/28(金) 20:57:07.91ID:tkMERdaz 、
992デフォルトの名無しさん
2023/04/28(金) 20:57:43.18ID:tkMERdaz 田中
993デフォルトの名無しさん
2023/04/28(金) 20:58:09.56ID:tkMERdaz この頃
994デフォルトの名無しさん
2023/04/28(金) 20:58:39.01ID:tkMERdaz こんばんは
995デフォルトの名無しさん
2023/04/28(金) 20:59:00.21ID:tkMERdaz 商店街
996デフォルトの名無しさん
2023/04/28(金) 20:59:20.67ID:tkMERdaz 。、
997デフォルトの名無しさん
2023/04/28(金) 20:59:45.91ID:tkMERdaz コンフィデンス
998デフォルトの名無しさん
2023/04/28(金) 21:00:11.27ID:tkMERdaz ごフレ
999デフォルトの名無しさん
2023/04/28(金) 21:00:17.86ID:tkMERdaz 。
1000デフォルトの名無しさん
2023/04/28(金) 21:00:52.22ID:tkMERdaz にたな
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 4556日 7時間 59分 56秒
新しいスレッドを立ててください。
life time: 4556日 7時間 59分 56秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 731部隊の新資料、中国が公開 「日本が細菌戦の罪を自白」と主張 ロシアが引き渡し [少考さん★]
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 「おこめ券は米以外の食品も買える。効果的な活用を」 地元で農水相 [山形県] [少考さん★]
- 中国・ロシア両軍の爆撃機が東京方面へ向かう「異例のルート」を共同飛行…核も搭載可能、連携して威嚇か ★8 [ぐれ★]
- 【広島】ペルー女性の国保加入を誤って認め、福山市が医療費484万円を肩代わりするミス…入院して手術を受ける [ぐれ★]
- 首都高料金値上げへ 上限1950円撤廃も視野 維持費などコスト10年で1.4倍に急増で [737440712]
- 【緊急高市朗報】WBC全試合、地上波完全生放送決定wmwmwmwmwmwmwmwmwmwmwmwmwmwmwmw [517459952]
- 【実況】博衣こよりのえちえちダンガンロンパ4🧪
- 【高市速報】ダウンジャケット(カナダグース)おじさん、大量発生😲!!!!!!!!!!!!!! [862423712]
- 🏡パン🍞つー✌まる👌見え👊😅👊
- 千晴!😡
