Организовать соединение символов в строку - 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).
Объяснение кода листинга программы
- Код решает задачу обработки строки.
- В первой части кода есть два правила вывода:
- beforeSharp([H|[HT|_]],[H]):- HT =:= 35, !. - если в голове списка HT равно 35, то выводим голову списка H и останавливаемся.
- beforeSharp([H|T],[H|NewList]) :- beforeSharp(T, NewList). - если в голове списка HT не равно 35, то рекурсивно вызываем beforeSharp для списка T и объединяем результат с головой списка H.
- Во второй части кода есть два правила обработки строк:
- trim([],[]) :- !. - если список пуст, то ничего не делаем и останавливаемся.
- trim([H|T], [H|NewList]) :- H =\= 32, trim(T, NewList). - если элемент списка H не равен пробелу, то рекурсивно вызываем trim для списка T и добавляем элемент H в начало нового списка NewList.
- В третьей части кода есть правило:
- trim([_|T],NewList) :- trim(T,NewList). - если первый элемент списка T пуст, то рекурсивно вызываем trim для списка T и добавляем результат в новый список NewList.
- В четвертой части кода есть правило:
- 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 из Результата формируется строка.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д