Организовать соединение символов в строку - Prolog

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

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

Помогите, пожалуйста Дана строка с отдельными символами, записанными через пробел. Организовать соединение символов в строку до тех пор, пока не будет считан символ «#». Вывести полученную строку.

Решение задачи: «Организовать соединение символов в строку»

textual
Листинг программы
beforeSharp([H|[HT|_]],[H]):- HT =:= 35, !.
beforeSharp([H|T],[H|NewList]) :- beforeSharp(T, NewList).
 
trim([],[]) :- !.
trim([H|T], [H|NewList]) :- H =\= 32, trim(T, NewList).
trim([_|T],NewList) :- trim(T,NewList).
 
getstr2(InputStr, Result) :- beforeSharp(InputStr, BeforeSharpOutputStr),
    trim(BeforeSharpOutputStr, OutputStr),
    string_to_list(Result, OutputStr).

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

  1. Код решает задачу обработки строки.
  2. В первой части кода есть два правила вывода:
    • beforeSharp([H|[HT|_]],[H]):- HT =:= 35, !. - если в голове списка HT равно 35, то выводим голову списка H и останавливаемся.
    • beforeSharp([H|T],[H|NewList]) :- beforeSharp(T, NewList). - если в голове списка HT не равно 35, то рекурсивно вызываем beforeSharp для списка T и объединяем результат с головой списка H.
  3. Во второй части кода есть два правила обработки строк:
    • trim([],[]) :- !. - если список пуст, то ничего не делаем и останавливаемся.
    • trim([H|T], [H|NewList]) :- H =\= 32, trim(T, NewList). - если элемент списка H не равен пробелу, то рекурсивно вызываем trim для списка T и добавляем элемент H в начало нового списка NewList.
  4. В третьей части кода есть правило:
    • trim([_|T],NewList) :- trim(T,NewList). - если первый элемент списка T пуст, то рекурсивно вызываем trim для списка T и добавляем результат в новый список NewList.
  5. В четвертой части кода есть правило:
    • getstr2(InputStr, Result) :- beforeSharp(InputStr, BeforeSharpOutputStr), trim(BeforeSharpOutputStr, OutputStr), string_to_list(Result, OutputStr). - функция getstr2 принимает на вход строку InputStr и результат string_to_list Result. Сначала происходит обработка строки с помощью beforeSharp, затем с помощью trim, после чего с помощью string_to_list из Результата формируется строка.

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


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

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

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