Задание: написать предикат 'поиск_по_маске'(Str,Maska), с помощью которого осуществляется сравнение строки Str со строкой-маской Maska.
Строка-маска – это искомая последовательность символов, включающая символы «*». Каждый символ «*» показывает, что на его месте может находиться любое количество любых символов. Строка-маска задает шаблон, которому может удовлетворять множество строк.
/* Определение отношения 'поиск_по_маске'(Str,Maska),
Str - тестируемая строка, Maska - строка-маска для поиска,
в маске допустим только один управляющий символ "*",
который обозначает любое количество любых символов */
'поиск_по_маске'([],[]). /* Пустые строки равны */
'поиск_по_маске'([X|T],[X|T1]):- /* Текущие символы совпадают*/
'поиск_по_маске'(T,T1). /* Проверить оставшиеся */
'поиск_по_маске'([X|T],[Zv|T1]):-"*"=[Zv], /* Найден символ звездочка */
'пропустить'(T,T1).
/* В оставшейся части строки найти символ,
совпадающий с первым символом за звездочкой в маске */
'пропустить'(_,[]). /* В маске элементов больше нет*/
'пропустить'([X|T],[X|T1]):-'поиск_по_маске'(T,T1)./* Найден символ,
совпадающий с символом маски */
'пропустить'([X|T],T1):-'пропустить'(T,T1). /* Пропуск символов
в соответствии со звездочкой в маске */
|