Создайте модель ASP, которая создает все возможные пароли с учетом следующих ограничений паролей. Сколько паролей существует?
Пожалуйста, не комментируйте ответ, а просто скажите мне, где в процедуре мое решение clingo ошибочно.
NV = 1.. N. %numerical values
sc = #;*;$;!; %special characters
c = 1..c. %characters
pcn = 1..cn. %password character numbers
2.) Пароли должны состоять не менее чем из 4 и не более чем из 6 символов с сочетанием цифровых и специальных символов.
:-Pass(P #count (cn : in(p,cn)) < 4.
:-Pass(P #count (cn : in(p,cn)) > 6.
3.) Пароли должны содержать хотя бы один цифровой символ.
1{in(p,sc) : sc(sc))1 :- Pass(p).
4.) Пароли должны содержать хотя бы один специальный символ.
1{in(p,NV) : NV(N))1 :- Pass(p).
5.) Пароли не могут содержать последовательные повторяющиеся символы [пример неверного пароля: 9988*] [пример действительного пароля: 9897#]
:-in(a,b,p1), in(c,d,P2), consecutive(a,b,c,d), pass(p1), pass(p2), pass(p3), pass(p4), pass(p5), pass(p6), G1==G2,, G3==G4, G5==G6.
#show/6.
edit add on Я также подумал, что другой способ взглянуть на проблему может быть
char= 1..13.
consecutive(1,1,2,2).consecutive(3,3,4,4).consecutive(5,5,6,6).consecutive(7,7,8,8).consecutive(9,9,10,10).consecutive(11,11,12,12).
:-Pass(P #count (cn : in(p,cn)) < 4.
:-Pass(P #count (cn : in(p,cn)) > 6.
%3.) Пароли должны содержать по крайней мере один цифровой символ меньше и больше 9, причем цифра больше 9 является специальным символом.
1{in(p,char) : Char(c))1 > 9 :- Pass(p).
1{in(p,char) : Char(c))1 < 9 :- Pass(p).
5.) Пароли не могут содержать последовательные повторяющиеся символы [пример неверного пароля: 9988*] [пример действительного пароля: 9897#]
:-in(X,p1), in(Y,P2), consecutive(X1,X2,Y1,Y2), pass(p1), pass(p2), pass(p3), pass(p4), pass(p5), pass(p6), P1==P2,, P3==P4, P5==P6.