- ベストアンサー
prologについての質問です。
課題で、リストXのなかにある要素 Yの個数を数える述語 allcount(X,Y,N)を定義しなさい。 というものが出ましたが、参考になるような本も、webページも見つけられませんでした。 どういったように定義すればよいでしょうか? ?- allcount([1,2,[1,2],1], 1, N). の答えが N=3 となればよいらしいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
課題なんですよね? ではサブ課題を。リストの要素数をカウントするのは、 count_list( [], 0 ). count_list( [X|Y], N ) :- N=M+1, count_list( Y, M ). #あれ私の prolog 環境がおかしい…で、テストできませんが、 これに allcount の Y の条件を組み込むのが最初のステップ。これができたら、今度は X の要素がリストの場合、再帰的にその要素に対して同じことをすればいいのではないでしょうか。
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
回答No.2
allcount([],_,0). allcount([X|Y],X,V) :- allcount(Y,X,M), V is M + 1. allcount([Z|Y],X,V) :- atomic(Z),allcount(Y,X,V). allcount([Z|Y],X,V) :- allcount(Z,X,M),allcount(Y,X,N), V is M+N.