Написание рекурсивного правила Пролога count3(L, P, Z, N)
, где L
- список целых чисел, P
- количество положительных чисел в L
, Z
- количество нулей в L
;N
- это число отрицательных чисел в L
.
count3(L, P, Z, N) :-
count3(L, O, O, O, P, Z, N).
count3([], P, Z, N, P, Z, N).
count3( [X|L], A, B, C, P, Z, N) :-
tick(X,A,B,C,A1,B1,C1),
count3(L,A1,B1,C1,P,Z,N).
tick(X, P, Z, N, P1, Z, N) :- % positive
X > 0,
P1 is P+1.
tick(Z, P, Z, N, P, Z, N1) :- % negative
X < 0,
N1 is N+1.
tick(X, P, Z, N, P, Z1, N) :- % zero is unsigned
X == 0,
Z1 is Z+1.
Получение предупреждения: одноэлементные переменные [X] для тика / 7 и фатальная ошибка: несвязанная переменная в арифметическом выражении.Любая помощь приветствуется.