Каждый элемент, стоящий на чётной позиции, поменять местами с соседним элементом, стоящим перед ним - Prolog

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

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

Задача состоит в следующем: дан список, каждый элемент, стоящий на чётной позиции, поменять местами с соседним элементом, стоящим перед ним. Есть код, в котором каждый n-ный элемент заменяется на какое-то число. Понимаю, что переделать довольно просто, но ничего не выходит. Помогите, пожалуйста! Visual Prolog. Вот код, от которого пыталась оттолкнуться (меняет каждый n-ный элемент списка на какое-то число):

Решение задачи: «Каждый элемент, стоящий на чётной позиции, поменять местами с соседним элементом, стоящим перед ним»

textual
Листинг программы
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, список после которого также выводится на экран. Кроме того, в основной части кода предусмотрена обработка ввода с клавиатуры, которая позволяет использовать данный код в интерактивном режиме.

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


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

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

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