我在下面有这个 Prolog 程序,它检查密码是否符合某些规则(密码必须包含字母(az)、数字(0-9)、双字母(aa、ll、ww 等),必须开始带有字母(a、aa、c 等),长度必须至少为 6 个字符)。
如何扩展它以便将双字母计为一个字母?(例如,aa25b1 不是正确的密码,因为它只有五个字符长)。
contains_letter(Password) :- wildcard_match('*[a-zA-Z]*', Password).
contains_number(Password) :- wildcard_match('*[0-9]*', Password).
contains_double_letter(Password) :-
(between(65, 90, Letter) ; between(97, 122, Letter)),
append([_, [Letter, Letter], _], Password),
!.
starts_with_letter(Password) :- wildcard_match('[a-zA-Z]*', Password).
long_enough(Password) :-
length(Password, Length),
Length >= 6.
check_everything(Password) :-
contains_letter(Password),
contains_number(Password),
contains_double_letter(Password),
starts_with_letter(Password),
long_enough(Password).