2

私のデータベースは、次のような述語で構成されています。

道路(1,2,geel). 道路(2,3,blauw)。道路(1,3,geel).

最初の 2 つの数字はポイントです。すべてのポイントに偶数の道路があるかどうかを確認する必要があります。私は以下のコードでなんとかできましたが、どういうわけかこれを行うより良い方法があると思います。

% Count(Element, List, Occurences) => Counts the amount of occurences of Element in the    given List
count(_, [], 0).
count(X, [X | T], N) :-
  !, count(X, T, N1),
  N is N1 + 1.
count(X, [_ | T], N) :-
  count(X, T, N).

checkRoad :-
    findall(Point,(weg(Point,_,_) ; weg(_,Point,_)),List),
    list_to_set(List,K),
    foreach( (member(P,K), count(P, List,N)), N mod 2 =:= 0 ).
4

1 に答える 1