• ベストアンサー

prologについての質問です。

課題で、リストXのなかにある要素 Yの個数を数える述語  allcount(X,Y,N)を定義しなさい。 というものが出ましたが、参考になるような本も、webページも見つけられませんでした。 どういったように定義すればよいでしょうか? ?- allcount([1,2,[1,2],1], 1, N). の答えが N=3 となればよいらしいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • chirubou
  • ベストアンサー率37% (189/502)
回答No.1

課題なんですよね? ではサブ課題を。リストの要素数をカウントするのは、 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.

関連するQ&A