トップページ > プログラム > 2016年05月10日 > kw95GqYD

書き込み順位&時間帯一覧

9 位/244 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000004000004



使用した名前一覧書き込んだスレッド一覧
808
【論理】Prolog【初心者】

書き込みレス一覧

【論理】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.


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。