Дано натуральное число N. Выбросить из записи числа, цифру k (0<=k<=9) - Prolog

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

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

Решение задачи: «Дано натуральное число N. Выбросить из записи числа, цифру k (0<=k<=9)»

textual
Листинг программы
domains
int=integer
intl=int*
 
predicates
n2l(int,intl)
app(intl,intl,intl)
rev(intl,intl)
del_dig(intl,int,intl)
l2n(intl,int,int)
task(int,int,int)
 
clauses
n2l(N,[N]) :- N<10, !.
n2l(N,[K|R]) :- K=N mod 10, Q= N div 10, n2l(Q,R).
 
app([],X,X).
app([H|T],X,[H|Q]) :- app(T,X,Q).
 
rev([],[]).
rev([H|T],Q) :- rev(T,R), app(R,[H],Q).
 
del_dig([],_,[]).
del_dig([H|T],D,R) :- H=D, del_dig(T,D,R).
del_dig([H|T],D,[H|R]) :- H <> D, del_dig(T,D,R).
 
l2n([],A,A).
l2n([H|T],A,R) :- A1=A*10+H, l2n(T,A1,R).
  
task(N,D,R) :- n2l(N,NL), del_dig(NL,D,ND), rev(ND,DN),l2n(DN,0,R).

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

Код решает задачу обработки десятичной записи натурального числа N и выброса из неё цифры k (0<=k<=9). В коде используются следующие основные элементы:

  1. Понятие переменной: любое утверждение может быть истинным или ложным.
  2. Представление натуральных чисел: числа от 0 до 9 представлены в коде с помощью символов от '0' до '9'.
  3. Массивы: для хранения наборов данных используются массивы (в языке Prolog — списки).
  4. Циклы: для обработки всех элементов массива в коде используются циклы.
  5. Рекурсия: для обработки чисел, больших 10, используется рекурсия.
  6. Условные операторы: в коде используется оператор if-then-else для обработки выбросов цифр из записи числа.
  7. Функции: в коде имеются функции для преобразования чисел в строки и обратно. Список функций и их описание: — n2l(N,NL) — преобразование натурального числа N в строку с цифрами без пробелов (например, n2l(123,['1','2','3'])). — app(X,Y,Z) — объединение строк X и Y в одну строку (например, app('abc','def','abcdef')). — rev(X,Y) — перестановка символов строки X задом наперёд (например, rev('abc','cba')). — del_dig(X,D,Z) — удаление из строки X цифры D (например, del_dig('1234','3',['1','2','4'])). — l2n(X,A,R) — преобразование строки X в натуральное число A (например, l2n(['1','2','3'],123,123)). — task(N,D,R) — решение задачи: выбросить из записи числа цифру k (0<=k<=9) (например, task(123,3,120)).

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


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

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

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