Определение, имеются ли в числовом списке два подряд идущих нулевых элемента - Prolog
Формулировка задачи:
Определение, имеются ли в числовом списке два подряд идущих нулевых элемента
Решение задачи: «Определение, имеются ли в числовом списке два подряд идущих нулевых элемента»
textual
Листинг программы
domains int=integer intl=int* predicates task(intl) clauses task([_]) :- fail. task([H1,H2|_]) :- H1=0, H2=0. task([H1|T]) :- H1<>0, task(T).
Объяснение кода листинга программы
- Задана переменная
taskтипаpredicate - Задано множество
domainsс двумя элементами:intиintl - Задано множество
clauses(условия) с тремя элементами:- Первое условие: если список пустой, то задача некорректна и можно прекратить выполнение (fail).
- Второе условие: если в списке есть два нуля подряд, то это является решением задачи.
- Третье условие: если первый элемент списка не равен нулю, то рекурсивно вызывается функция
taskдля оставшейся части списка.
- В основной части программы вызывается функция
taskс пустым списком, что вызывает первое условие вclausesи прекращает выполнение программы.