Нахождение n-го элемента списка - Prolog
Формулировка задачи:
Написать программу для получения значения n-го элемента списка. Например: в списке [three, one, two] второй элемент равен one. Напишите, пожалуйста полную программу.
Решение задачи: «Нахождение n-го элемента списка»
textual
Листинг программы
domains list = string* predicates nth(integer, list, string) clauses nth(1, [X|_], X). nth(N, [_|T], X) :- NN = N - 1, nth(NN, T, X). goal L = [one, two, three], write(L), nl, write("N: "), readint(N), nth(N, L, X), write(X), nl.
Объяснение кода листинга программы
domains
- определение типа данных для переменных в коде. В данном случае, список представлен как строка из элементов.predicates
- определение функции (предиката)nth
, которая принимает три аргумента: целое числоN
, списокL
и возвращает строкуX
.clauses
- определение правил (условий) для функцииnth
. Первое правило говорит, что еслиN
равно 1, то функция возвращает первый элемент спискаL
. Второе правило говорит, что еслиN
больше 1, то функция рекурсивно вызывает саму себя, уменьшаяN
на 1, и объединяет результат с последним элементом спискаT
.goal
- определение начальной информации и действий, которые должны быть выполнены. Создается списокL
со значениями[one, two, three]
. Затем этот список выводится на экран, после чего пользователю предлагается ввести целое числоN
. После ввода числа, вызывается функцияnth
с аргументамиN
иL
, и результат выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д