以下の Prolog プログラムは、パスワードが特定のルール (パスワードには文字 (az)、数字 (0-9)、二重文字 (aa、ll、ww など) が含まれている必要がある) を満たしているかどうかを調べるもので、開始する必要があります。文字 (a、aa、c など) を使用する場合は、6 文字以上にする必要があります)。
2文字が1文字としてカウントされるように拡張するにはどうすればよいですか? (たとえば、aa25b1 は 5 文字しかないため正しいパスワードではありません)。
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).