Пронумеровать список - Prolog
Формулировка задачи:
Нужна процедурка, которая формирует новый список, элементами которого являются составные структуры: число списка и его порядковый номер, то есть нужно пронумеровать список.
Решение задачи: «Пронумеровать список»
textual
Листинг программы
domains int=integer intl=int* intll=intl* predicates num_list(intl,int,intll) clauses num_list([],_,[]). num_list([H|T],N,[[N,H]|R]) :- N1=N+1, num_list(T,N1,R).
Объяснение кода листинга программы
domains
- определения типов данныхpredicates
- определение predicator (предикат) функцииclauses
- определение правил (условий) для функцииnum_list([],_,[]).
- базовый случай, когда список пустnum_list([H|T],N,[[N,H]| R]) :- N1=N+1, num_list(T,N1,R).
- рекурсивный случай, когда список не пустN1=N+1
- увеличение номера элемента спискаnum_list(T,N1,R)
- рекурсивный вызов функции с новыми параметрами[[N,H]| R]
- формирование нового элемента списка с номером и значениемR
- результат рекурсивного вызова функции[H| T]
- разбиение списка на голову и хвостnum_list([],_,[]).
- базовый случай, когда список пустnum_list([H| T],N,[[N,H]| R]) :- N1=N+1, num_list(T,N1,R).
- рекурсивный случай, когда список не пустN1=N+1
- увеличение номера элемента спискаnum_list(T,N1,R)
- рекурсивный вызов функции с новыми параметрами[[N,H]| R]
- формирование нового элемента списка с номером и значениемR
- результат рекурсивного вызова функции[H| T]
- разбиение списка на голову и хвостnum_list([],_,[]).
- базовый случай, когда список пустnum_list([H| T],N,[[N,H]| R]) :- N1=N+1, num_list(T,N1,R).
- рекурсивный случай, когда список не пустN1=N+1
- увеличение номера элемента спискаnum_list(T,N1,R)
- рекурсивный вызов функции с новыми параметрами[[N,H]| R]
- формирование нового элемента списка с номером и значениемR
- результат рекурсивного вызова функции[H| T]
- разбиение списка на голову и хвост
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д