Содержатся ли в последовательности все символы указанного слова

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

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

Просмотр 2 сообщений - с 1 по 2 (из 2 всего)
  • Автор
    Сообщения
  • #1941

    questioner
    Участник

    Помогите решить задачу:

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

    Например: последовательность «development» содержит в себе символы слова «dont».

    contain(X, Y) :-
        atom_codes(X, Xcodes),
        atom_codes(Y, Ycodes),
        append(_, End, Xcodes),
        append(Ycodes, _, End).

    Тут проверяется только правильность размещения символов в списках.
    Примеры:
    contain(development,evelop). % -Yes.
    contain(development,dont). % -No.(а должно быть Yes)

    Как можно доработать данную программу?

    #1942

    contain(_Sequence, []):-!.
    contain([Head|TailSequence], [Head|TailWord]):-
      !, contain(TailSequence, TailWord).
    contain([_HeadSequence|TailSequence], Word):-
      contain(TailSequence, Word).

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

Просмотр 2 сообщений - с 1 по 2 (из 2 всего)

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