Ответ в теме: Найти слова с йотированными буквами – Prolog

      Комментарии к записи Ответ в теме: Найти слова с йотированными буквами – Prolog отключены
#1911

Буквы е, ё, ю, я называются йотированными если находятся:

  • в начале слова;
  • после гласных;
  • после твердого или мягкого знаков.

Описываете все буквы, которые могут быть йотированными, гласные буквы и знаки:

йотированная_буква("е").
йотированная_буква("ё").
йотированная_буква("ю").
йотированная_буква("я").

гласная_буква("а").
гласная_буква("у").
гласная_буква("о").
гласная_буква("ы").
гласная_буква("и").
гласная_буква("э").
гласная_буква("я").
гласная_буква("ю").
гласная_буква("ё").
гласная_буква("е").

разделительный_знак("ъ").
разделительный_знак("ь").

Для поиска сочетаний из букв в слове можно использовать предикат разделения строки на список частей.

проверка_йотированных(Слово):-
  йотированная_буква(Йотированная), 
  divide_word(Слово, [Йотированная, _]), !.
проверка_йотированных(Слово):-
  гласная_буква(Гласная), 
  йотированная_буква(Йотированная),
  divide_word(Слово, [_, Гласная, Йотированная, _]), !.
проверка_йотированных(Слово):-
  разделительный_знак(Знак),
  йотированная_буква(Йотированная), 
  divide_word(Слово, [_, Знак, Йотированная, _]), !.

Первое правило получает каждую букву, которая может быть йотированной и проверяет является ли она первой в слове (она стоит в начале списка).
Второе и третье правило получают кроме буквы еще знак или гласную, ставят их в середину слова (справа и слева от них стоят анонимные переменные).

Вам остается лишь считать слова с файла.