Strawberry Prolog Нахождение элемента списка, следующего за данным

Узнай цену своей работы

Формулировка задачи:

Strawberry Prolog

1. Нахождение элемента списка, следующего за данным. 2. Проверка списка на геометрическую прогрессию. Помогите решить, пожалуйста! Не дружу с этим ЯП.

Решение задачи: «Strawberry Prolog Нахождение элемента списка, следующего за данным»

textual
Листинг программы
  1. find_next(X, [X,Y|_], Y) :- !.
  2. find_next(X, [_|T], Y) :-
  3.     find_next(X, T, Y).
  4.  
  5. geom_seq([X,Y,Z|T]) :-
  6.     !,
  7.     (Y * Y) =:= (X * Z),
  8.     geom_seq([Y,Z|T]).
  9. geom_seq(_).
  10.  
  11. test :-
  12.     %Test = [1,2,3,4,5,6,7,8,9,0],
  13.     Test = [1,2,4,8,16],
  14.  
  15.     find_next(8, Test, X3),
  16.     write(X3), nl,
  17.  
  18.     geom_seq(Test),
  19.     write('Yes'), nl;
  20.     write('No'), nl.
  21.  
  22. ?-test.

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

  1. Находим следующий элемент списка, используя findnext/3. Входные параметры: X (текущий элемент), [X,Y|] (список, состоящий из текущего элемента и следующего элемента, который мы и ищем) и Y (следующий элемент). Выходной параметр: Y.
  2. Находим следующий элемент списка, используя findnext/3. Входные параметры: X (текущий элемент), [|T] (список, состоящий из всех элементов, кроме первого) и Y (следующий элемент). Выходной параметр: Y.
  3. Решаем геометрическую прогрессию, используя geom_seq/2. Входные параметры: [X,Y,Z|T] (список, состоящий из текущего элемента, следующего элемента и следующего после него элемента) и Y (текущий элемент). Выходной параметр: Y.
  4. Решаем геометрическую прогрессию, используя geomseq/2. Входные параметры: (любой список) и Y (текущий элемент). Выходной параметр: Y.
  5. Создаем список Test, состоящий из чисел от 1 до 9 и затем от 16 до 0 с шагом -2.
  6. Находим следующий элемент списка, используя find_next/3. Входные параметры: 8 (текущий элемент), Test (список, состоящий из текущего элемента и следующего элемента) и X3 (следующий элемент). Выводим X3.
  7. Решаем геометрическую прогрессию, используя geom_seq/2. Выводим 'Yes'.
  8. Решаем геометрическую прогрессию, используя geom_seq/2. Выводим 'No'.

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


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

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

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы