Мне нужно найти первый подсписок, имеющий все числа от 1 до K, и вернуть его и его длину.
Заранее извините за плохое редактирование
Поэтому я проверяю,От 1 до K находится в подсписке, если нет, то я удаляю элемент (Hd) из
NumList, добавляю его к нашему результату (SubList) и рекурсивно вызываю функцию
с хвостом в качестве нашего новогоСписок для проверки.
findFirstSubListHavingAllColors( NumList, [Hd|Tl] ,SubList, X):-
( oneToKinSub(SubList,NumList)
-> length(SubList,X)
; delete(NumList,Hd,NumList1),
append(SubList,[Hd],SubList1),
findFirstSubListHavingAllColors(NumList1,Tl,SubList1,_)
).
oneToKinSub(_,[]).
oneToKinSub(SubString,[Hd|Tl]) :-
member(Hd,SubString),
oneToKinSub(SubString,Tl).
Например, если
NumList = [1,2,3]
[Hd | Tl] = [1,3,1,3,1,3,3,2 , 2,1]
ожидаемый результат должен быть SubList = [1,3,1,3,1,3,3, 2] и Х = 8