Так как язык не указан, приведу пример на SWI-Prolog.
Код:
read_int(Int) :- read(Int), integer(Int).split_int_by_numbers(0, []) :- !.split_int_by_numbers(N, [Number|Ints]) :- Number is mod(N, 10), RestN is div(N, 10), split_int_by_numbers(RestN, Ints).test_to_div(_, []).test_to_div(N, [Number|Ints]) :- mod(N, Number) =:= 0, test_to_div(N, Ints). test(Int) :- split_int_by_numbers(Int, Numbers), test_to_div(Int, Numbers), write(Int), write(" - Yes!"), nl.test(Int) :- write(Int), write(" - No!"), nl.?- read_int(Int), test(Int).
Для решения этой задачи я написал функцию, которой на вход достаточно подать любой список из чисел, после чего она вернёт максимальную разницу его соседних элементов. Исходный код будет приложен ниже. Для демонстрации работы функции я также ввёл список [1, 3, 6, 10, 15, 17, 18, 29, 32] и посчитал его максимальную разницу для соседних элементов. Прилагаю также файл с исходным кодом (main.txt) и скриншот работы программы на моём списке.
Объяснение:
Исходный код:
# Функция, которая находит максимальную разницу между соседними элемента списка, который мы ей дадим
def max_diff_in_list(some_list):
max_diff = 0 # Текущая известная максимальная разницы
for num_index in range(len(some_list) - 1): # Берём индекс для каждого элемента от первого до предпоследнего...
next_num_index = num_index + 1 # Также фиксируем индекс каждого элемента соответственно от второго до последнего
current_diff = some_list[next_num_index] - some_list[num_index] # Считаём разницу 1 и 2, 2 и 3, ..., N-1 и N элементов
if abs(current_diff) > max_diff: # Если эта разница больше текущей известной максимальной разницы...
max_diff = current_diff # то фиксируем эту разницу
return max_diff # Выводим ту максимальную разницу, которую нашли за всё время
# Список для демонстрации функции
nums_list = [1, 3, 6, 10, 15, 17, 18, 29, 32]
print("Наибольшая разница между соседними элементами в списке", nums_list, "составляет:", max_diff_in_list(nums_list))