Найти слова с йотированными буквами — Prolog

      Комментарии к записи Найти слова с йотированными буквами — Prolog отключены

Помечено: , ,

В этой теме 1 ответ, 2 участника, последнее обновление  Васильев Владимир Сергеевич 2 года/лет, 5 мес. назад.

  • Автор
    Сообщения
  • #1908

    VeraCherkassova
    Участник

    Помогите, пожалуйста, с такой задачей:

    Есть файл с мультистрочным текстом, содержащий буквы, цифры и другие символы. Нужно написать программу, которая будет находить слова с йотированными буквами.

    Буду очень благодарна вашей помощи

  • #1911

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

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

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

    йотированная_буква("е").
    йотированная_буква("ё").
    йотированная_буква("ю").
    йотированная_буква("я").
    
    гласная_буква("а").
    гласная_буква("у").
    гласная_буква("о").
    гласная_буква("ы").
    гласная_буква("и").
    гласная_буква("э").
    гласная_буква("я").
    гласная_буква("ю").
    гласная_буква("ё").
    гласная_буква("е").
    
    разделительный_знак("ъ").
    разделительный_знак("ь").

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

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

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

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

Для ответа в этой теме необходимо авторизоваться.