Нахождение 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
, и результат выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д