Может ли кто-нибудь сказать мне, что не так в моем случае, если еще в моем поиске, в подсписке.Условие ошибки, если else в прологе
Поскольку, когда размер равен 0, условие работает, но если значение становится 1,2 и 3, оно представляет ошибку, но операторы связи неверны?
Если переменная длина имеет размер = 0, условие работает, но если длина переменной имеет размер 3, она имеет ошибку.
Ошибка:
Исключение:> =/2: Аргументы не достаточно экземпляра.
subList([], []).
subList(List1,List2):-
concatenate(List1,List2,Result1),
equalelements(Result1,Result2),
counting(Result2,Length),
Length =< 2
-> false
; Length >= 3
-> true.
searchdisease([],_).
searchdisease(Symptoms,Disease) :-
disease(Ls, Disease),
subList(Symptoms, Ls).
counting([ ],0).
counting([_| T], N) :-
counting(T, N1),
N is N1 + 1.
concatenate(L1, L2, NL) :-
append(L1, L2, L12),
msort(L12, NL).
Длина - переменная возврата размера списка, время, когда оно возвращает размер 0, время, когда оно возвращает размер 1 или размер 2,3,4, и т. Д. Поэтому я проверяю, меньше ли размер списка или равен ему 2 или больше или равно 3. –
Я отступил от ваших правил: теперь вы видите, что 'Length' не является обязательным для' Length> = 3' – false
Длина - это возврат предиката Counting, который возвращает размер списка в переменной lenght , –