Составить строку из первых и последних букв слов первоначальной строки

Главная Форумы Программирование Помощь с решением задач на Prolog Задачи на строки и файлы Составить строку из первых и последних букв слов первоначальной строки

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

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

    questioner
    Участник

    Помогите решить две задачи на Turbo Prolog:

    1. Создайте предикат, преобразующий исходную строку в строку, состоящую из первых букв слов первоначальной строки.
    2. Создайте предикат, преобразующий исходную строку в строку, состоящую из последних букв слов первоначальной строки.
  • #1969

    Разбейте строку на список слов при помощи предиката string_to_words, а затем получайте первые или последние символы:

    get_first_words_symbols_string(String, FirstWordsSymbols):-
      string_to_words(String, Words),
      words_to_first_symbol_string(Words, FirstWordsSymbols).

    Можно описать две вспомогательных функции, возвращающие первый и последний символ слова (строки) соответственно:

    get_first_symbol([Symbol|_StringTail], Symbol).
    get_last_symbol(Word, Symbol):-
      reverse(Word, [Symbol|_WordTail]).

    Для получения последнего символа можно использовать встроенную функцию last, однако, она отсутствует в Turbo и Visual Prolog, поэтому выполняется реверс списка и берется первый символ.

    words_to_first_symbol_string([], ""):-!.
    words_to_first_symbol_string([Word|OtherWords], [SymbolWord|SymbolOtherWords]):-
      get_first_symbol(Word, SymbolWord), 
      words_to_first_symbol_string(OtherWords, SymbolOtherWords).

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

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