Подсчитать количество целых чисел, входящих в список только один раз - Prolog

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

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

Подсчитать количество целых чисел, входящих в список [6, 6, 5, 5, 4, 3, 2, 2, 1] только один раз. Список упорядочен по убыванию.
Скажите пожалуйста, для чего в предикате используются три integer и symbol,за что каждый из них отвечает? predicates уник(il,integer,integer,integer,symbol) колич(il,integer)

Решение задачи: «Подсчитать количество целых чисел, входящих в список только один раз»

textual
Листинг программы
unique(_, [], 0).
unique(A, [A|L], N) :-
    !,
    unique(A, L, N).
unique(_, [A|L], N) :-
    unique(A, L, N1),
    N = N1+1.

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

Код на языке Prolog выполняет функцию подсчёта количества уникальных элементов в списке. Список разделён на три части:

  1. В первой части (код unique(_, [], 0)) определены начальные значения для трёх переменных: A, L и N. Значение N инициализируется нулём.
  2. Во второй части (код unique(A, [A|L], N) :- ...) происходит проверка: если элемент A встречается в списке только один раз, то значение N увеличивается на единицу.
  3. В третьей части (код unique(_, [A|L], N) :- unique(A, L, N1), N = N1+1) происходит рекурсивный вызов функции unique для списка L и значения N1, которое инициализируется значением N увеличенным на единицу. Затем значение N присваивается N1+1. Таким образом, проходя по всем элементам списка, функция unique подсчитывает количество уникальных элементов.

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


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

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

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