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

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

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

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

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

textual
Листинг программы
  1. p(S,L):-name(S,List),
  2.     name(' ',[SpaceCod]),
  3.     split(List,SpaceCod,Words),
  4.     p1(Words,L).
  5.  
  6. split(A,Space,[H|Tail]):-append(H,[Space|T],A),!,split(T,Space,Tail).
  7. split(A,_,[A]).
  8.  
  9. p1([],[]).
  10. p1([H|Tail],[H1|Tail1]):-name(H1,H),p1(Tail,Tail1).
  11.  
  12. append([],L2,L2).
  13. append([H|T],L2,[H|Z]):-
  14.     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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы