Является ли один список подсписком другого? - Prolog
Формулировка задачи:
является ли один список, подсписком другого?
Решение задачи: «Является ли один список подсписком другого?»
textual
Листинг программы
domains int=integer intl=int* predicates is_prefix(intl,intl) is_sublist(intl,intl) clauses is_prefix([],_) :- !. is_prefix([H|T],[H|Z]) :- is_prefix(T,Z). is_sublist(_,[]) :- fail. is_sublist(X,[H|R]) :- is_prefix(X,[H|R]) ; is_sublist(X,R).
Объяснение кода листинга программы
Данный код на языке Prolog проверяет, является ли один список подсписком другого.
domains
определяют типы данных для переменных:int
- целое число,intl
- список целых чисел.predicates
определяют сами проверки:is_prefix
- проверка, является ли один список подсписком другого,is_sublist
- проверка, является ли один список подсписком другого.clauses
содержат сами правила для проверок:is_prefix([],_)
- если первый список пустой, то он является подсписком любого другого списка.is_prefix([H|T],[H|Z])
- если первый список содержит элемент, который является подсписком второго списка, то и весь первый список является подсписком второго.is_sublist([],[])
- если первый список пустой, то он не является подсписком второго списка.is_sublist(X,[H|R])
- если первый список содержит элемент, который является подсписком второго списка, то первый список является подсписком второго.
- Код позволяет проверить, является ли один список подсписком другого. Например, можно вызвать
is_sublist(L,R)
, гдеL
- список, который предполагается подсписком, аR
- список, который предполагается более общим. ЕслиL
является подспискомR
, то будет возвращенtrue
, в противном случае -false
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д