Дано предложение на русском языке. Построить список слов предложения - Prolog

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

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

Добрый вечер!) Помогите пожалуйста с заданием.. Дано предложение на русском языке. Построить список слов предложения. Список не должен содержать повторов слов и знаков препинания. Аргументы: исходная строка; список слов. ?- pred(’Что воля, что неволя...’,X). X = [’что’,’воля’,’неволя’] yes ?-

Решение задачи: «Дано предложение на русском языке. Построить список слов предложения»

textual
Листинг программы
p(S,L):-name(S,List),
    name(' ',[SpaceCod]),
    split(List,SpaceCod,Words),
    p1(Words,L).
 
split(A,Space,[H|Tail]):-append(H,[Space|T],A),!,split(T,Space,Tail).
split(A,_,[A]).
 
p1([],[]).
p1([H|Tail],[H1|Tail1]):-name(H1,H),p1(Tail,Tail1).
 
append([],L2,L2).
append([H|T],L2,[H|Z]):-
    append(T,L2,Z).

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

  1. Вводная функция p(S,L) принимает два аргумента: S - предложение, L - список.
  2. Вызов функции name(S,List) ищет в предложении имя, отделяя его от списка.
  3. Вызов функции name(' ',[SpaceCod]) ищет в предложении пробел, отделяя его от списка.
  4. Вызов функции split(List,SpaceCod,Words) разбивает список на слова, используя пробел в качестве разделителя.
  5. Рекурсивный вызов функции p1(Words,L) обрабатывает каждое слово в списке.
  6. Если слово пустое, то оно удаляется из списка.
  7. Если слово не пустое, то его имя отделяется от значения и добавляется в начало списка.
  8. Если список пустой, то возвращается пустой список.
  9. Если список не пустой, то рекурсивно вызывается функция p1 для обработки оставшейся части списка.
  10. Функция append([],L2,L2) добавляет все элементы из L2 в конец L2.
  11. Функция append([H|T],L2,[H|Z])$:-append(T,L2,Z) добавляет все элементы из T в конец L2, а H в начало Z.
  12. Если L2 пустой, то возвращается L2.
  13. Если L2 не пустой, то рекурсивно вызывается функция append для обработки оставшейся части списка.

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


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

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

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