Strawberry Prolog Нахождение элемента списка, следующего за данным
Формулировка задачи:
Strawberry Prolog
1. Нахождение элемента списка, следующего за данным. 2. Проверка списка на геометрическую прогрессию. Помогите решить, пожалуйста! Не дружу с этим ЯП.Решение задачи: «Strawberry Prolog Нахождение элемента списка, следующего за данным»
textual
Листинг программы
- find_next(X, [X,Y|_], Y) :- !.
- find_next(X, [_|T], Y) :-
- find_next(X, T, Y).
- geom_seq([X,Y,Z|T]) :-
- !,
- (Y * Y) =:= (X * Z),
- geom_seq([Y,Z|T]).
- geom_seq(_).
- test :-
- %Test = [1,2,3,4,5,6,7,8,9,0],
- Test = [1,2,4,8,16],
- find_next(8, Test, X3),
- write(X3), nl,
- geom_seq(Test),
- write('Yes'), nl;
- write('No'), nl.
- ?-test.
Объяснение кода листинга программы
- Находим следующий элемент списка, используя findnext/3. Входные параметры: X (текущий элемент), [X,Y|] (список, состоящий из текущего элемента и следующего элемента, который мы и ищем) и Y (следующий элемент). Выходной параметр: Y.
- Находим следующий элемент списка, используя findnext/3. Входные параметры: X (текущий элемент), [|T] (список, состоящий из всех элементов, кроме первого) и Y (следующий элемент). Выходной параметр: Y.
- Решаем геометрическую прогрессию, используя geom_seq/2. Входные параметры: [X,Y,Z|T] (список, состоящий из текущего элемента, следующего элемента и следующего после него элемента) и Y (текущий элемент). Выходной параметр: Y.
- Решаем геометрическую прогрессию, используя geomseq/2. Входные параметры: (любой список) и Y (текущий элемент). Выходной параметр: Y.
- Создаем список Test, состоящий из чисел от 1 до 9 и затем от 16 до 0 с шагом -2.
- Находим следующий элемент списка, используя find_next/3. Входные параметры: 8 (текущий элемент), Test (список, состоящий из текущего элемента и следующего элемента) и X3 (следующий элемент). Выводим X3.
- Решаем геометрическую прогрессию, используя geom_seq/2. Выводим 'Yes'.
- Решаем геометрическую прогрессию, используя geom_seq/2. Выводим 'No'.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д