Вставка в список в заданную позицию заданное число раз - Prolog

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

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

А не могли бы вы,если не сложно, посмотреть еще одну программку, которую я пытасюсь написать ? Задача: вставить в список константу X, начиная с N-ой позиции K раз .

Решение задачи: «Вставка в список в заданную позицию заданное число раз»

textual
Листинг программы
domains 
  i=integer 
  list=i*
 
predicates 
  nondeterm ins_k_times(i,list,i,i,list)
   
clauses 
  ins_k_times(_, L, 0, 0, L) :- !.
  ins_k_times(X, L, 0, K, [X|T]) :- !, 
    K1 = K-1, 
    ins_k_times(X, L, 0, K1, T).
  ins_k_times(X, [H|T], N, K, [H|Q]) :-  
    N1 = N-1, 
    ins_k_times(X, T, N1, K, Q).
 
goal 
  ins_k_times(3, [5,5,5,5,5], 3, 3, L).

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

В этом коде определена функция ins_k_times, которая добавляет элемент в список определенное количество раз. В первой строке domains объявлены типы данных:

  • i - целочисленный тип (integer)
  • list - список целочисленных значений (i*) Затем, в строке predicates, определена недетерминированная функция ins_k_times, которая принимает следующие аргументы:
  • i - целочисленное значение
  • list - список целочисленных значений
  • N - счетчик количества добавлений
  • K - счетчик количества элементов, которые нужно добавить
  • L - результат функции В строке clauses определены следующие правила:
  • Первое правило гласит, что если N и K равны нулю, то функция завершается успешно и возвращает список L.
  • Второе правило гласит, что если N равно нулю, то функция завершается успешно и возвращает список [H|Q].
  • Третье правило гласит, что если N не равно нулю, то функция рекурсивно вызывается с аргументами N1, K1 и Q, где N1 равно N-1, а K1 равно K-1. В строке goal определена задача: добавить число 3 в список [5,5,5,5,5] три раза.

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


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

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

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