Каждый элемент, стоящий на чётной позиции, поменять местами с соседним элементом, стоящим перед ним - Prolog
Формулировка задачи:
- class predicates
- replace_nth: (A*, positive N, A With) -> A*.
- replace_nth: (A*, positive Counter, positive N, A With) -> A*.
- clauses
- replace_nth(L, N, A) = replace_nth(L, N, N, A):-
- N > 1,
- !.
- replace_nth(L, _, _) = L.
- replace_nth([_ | L], 1, N, A) = [A | replace_nth(L, N, N, A)]:- !.
- replace_nth([H | L], C, N, A) = [H | replace_nth(L, C - 1, N, A)].
- replace_nth([], _, _, _) = [].
- run():-
- L = [math::random(10) || _ = std::fromTo(1, 20)],
- write(L), nl,
- write(replace_nth(L, 2, 3)), nl,
- _ = readLine().
Решение задачи: «Каждый элемент, стоящий на чётной позиции, поменять местами с соседним элементом, стоящим перед ним»
- class predicates
- replace2: (A*) -> A*.
- clauses
- replace2([X,Y|T1]) = [Y,X|T2] :-
- !,
- T2 = replace2(T1).
- replace2(L) = L.
- run():-
- L = [math::random(10) || _ = std::fromTo(1, 20)],
- write(L), nl,
- write(replace2(L)), nl,
- _ = readLine().
Объяснение кода листинга программы
В данном коде на языке Prolog определён предикат replace2, принимающий на вход список (обозначен как A*), и возвращающий список, в котором каждый элемент, стоящий на чётной позиции, поменян местами с соседним элементом, стоящим перед ним. Синтаксис замены в Prolog выглядит следующим образом: [X,Y|T1] = [Y,X|T2] Где: — X и Y — элементы списка — T1 и T2 - это «хвосты» списков, которые рекурсивно обрабатываются Также в коде определён пользовательский метод math::random, который генерирует случайное число от 1 до 10. В основной части кода создаётся список L, заполняемый случайными числами от 1 до 20. Данный список выводится на экран, а затем применяется метод replace2, список после которого также выводится на экран. Кроме того, в основной части кода предусмотрена обработка ввода с клавиатуры, которая позволяет использовать данный код в интерактивном режиме.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д