Я хочу, чтобы написать предикат containsOnly(X,Y)
, который возвращает истину, если строка X
содержит только символы из строки Y.Как проверить, что строка содержит только определенные символы в Prolog?
Я написал об этом так:
containsOnly([],_).
containsOnly([H|T],AcceptableCharacters) :-
member(H, AcceptableCharacters),
containsOnly(T,AcceptableCharacters).
Но запросы ниже возвращения ложными. Как изменить предикат, чтобы они вернули true?
containsOnly('A', 'ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜabcdefghijklmnopqrstuvwxyzäöüАБВГДЕЁЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзиклмнопрстуфхцчшщъыьэюя-').
containsOnly('a', 'ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜabcdefghijklmnopqrstuvwxyzäöüАБВГДЕЁЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзиклмнопрстуфхцчшщъыьэюя-').
Пожалуйста, сначала прочитайте [связанный вопрос] (http://stackoverflow.com/q/8264699/1613573) о различии между '' 'и' '' в Prolog и важном флаге 'double_quotes'. – mat