is_multi(M)
次のように定義された predicate を記述しようとしています。
- のすべての要素の
M
形式は ですX / N
。ここX
で、 はアトムで、N
は 0 より大きい整数です。 M
何のために、同じ原子を持つ 2 つの要素を含まないis_multi([]). is_multi([a / 2, b / 2]).
満足していますが、
is_multi([a, b/2]). is_multi([a/0, b/2]). is_multi([a/2, 2/4]) is_multi([a/2, b/3, a/2]) is_multi([a/3, b/-4, c/1])
ではありません。
これまでに書いたものは次のとおりです。
is_multi(M) :- M = [].
is_multi(M) :-
M = [Head|Tail],
Head = X/N,
integer(N),
N > 0,
is_multi(Tail).
ただし、同じ原子の場合は 2 つの要素を比較しません。たとえば、is_multi([a/2, a/3])
満たされていない。私はこれで1日立ち往生しました。誰かが私にいくつかのヒントを与えることができますか?