Нахождение 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.

Объяснение кода листинга программы

  1. domains - определение типа данных для переменных в коде. В данном случае, список представлен как строка из элементов.
  2. predicates - определение функции (предиката) nth, которая принимает три аргумента: целое число N, список L и возвращает строку X.
  3. clauses - определение правил (условий) для функции nth. Первое правило говорит, что если N равно 1, то функция возвращает первый элемент списка L. Второе правило говорит, что если N больше 1, то функция рекурсивно вызывает саму себя, уменьшая N на 1, и объединяет результат с последним элементом списка T.
  4. goal - определение начальной информации и действий, которые должны быть выполнены. Создается список L со значениями [one, two, three]. Затем этот список выводится на экран, после чего пользователю предлагается ввести целое число N. После ввода числа, вызывается функция nth с аргументами N и L, и результат выводится на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5
Похожие ответы