- 【論理】Prolog【初心者】
819 :808[sage]:2016/05/10(火) 18:29:01.20 ID:kw95GqYD - >>807
ほかの人が言っているようにちょっとやりたいことがわからない(説明不足)けどこういうことかな? DCGを使った。 ringo(Ret)-->[a],{Ret = ringo}. banana(Ret)-->[a,a],{Ret = banana}. ichigo(Ret)-->[a,a,a],{Ret = ichigo}. mikan(Ret)-->[a,a,a,a],{Ret = mikan}. kiwi(Ret)-->[a,a,a,a,a],{Ret = kiwi}. fruit(X)-->ringo(X);banana(X);ichigo(X);mikan(X);kiwi(X). ringo_ringo([First|Rest])-->ringo(First),ringo(Rest),[]. ringo_banana([First|Rest])-->ringo(First),banana(Rest),[]. fruit_pair([X | Y])-->fruit(X),fruit(Y),[]. main:- phrase(ringo_ringo(X),RingoRingo,[]), write(RingoRingo), write(' '), write(X),nl, phrase(ringo_banana(Y),RingoBanana,[]), write(RingoBanana), write(' '), write(Y),nl, phrase(fruit_pair(Z),[a,a,a,a,a],[]), write('[a,a,a,a,a] '), write(Z),nl.
| - 【論理】Prolog【初心者】
820 :808[sage]:2016/05/10(火) 18:30:19.34 ID:kw95GqYD - 実行結果:
[2] 13 ?- % Updating index for library c:/program files/swipl/library/ % c:/users/koyahata/documents/prolog/fruit2 compiled 0.00 sec, 11 clauses [2] 13 ?- main. [a,a] [ringo|ringo] [a,a,a] [ringo|banana] [a,a,a,a,a] [ringo|mikan] true ; [a,a,a,a,a] [banana|ichigo] true ; [a,a,a,a,a] [ichigo|banana] true ; [a,a,a,a,a] [mikan|ringo] true ; false. やっつけなのでちょっとリストの作り方おかしいかもしれないけど…
| - 【論理】Prolog【初心者】
821 :808[sage]:2016/05/10(火) 18:38:04.23 ID:kw95GqYD - こういう質問もできるから、これでいいんじゃないの?
[2] 14 ?- phrase(fruit_pair([ringo|banana]),Ret,[]). Ret = [a, a, a] ; false. [2] 15 ?- phrase(fruit_pair([banana|ichigo]),Ret,[]). Ret = [a, a, a, a, a] ; false.
| - 【論理】Prolog【初心者】
822 :808[sage]:2016/05/10(火) 18:40:22.90 ID:kw95GqYD - こういう質問もできるよ
[2] 16 ?- phrase(fruit_pair([banana|ichigo]),Ret,[]),phrase(fruit_pair(Y),Ret,[]),write(Y). [ringo|mikan] Ret = [a, a, a, a, a], Y = [ringo|mikan] ; [banana|ichigo] Ret = [a, a, a, a, a], Y = [banana|ichigo] ; [ichigo|banana] Ret = [a, a, a, a, a], Y = [ichigo|banana] ; [mikan|ringo] Ret = [a, a, a, a, a], Y = [mikan|ringo] ; false.
|
|