在PHP的“查询”表单中,某些字段无法像电子邮件和电话号码一样进行验证。在这里,我编写了如下验证码:
luhn(N):-
spliter(N,Y),
reverse(Y, Z),
check(Z,X),
sum_all(X, Res),
T is Res mod 10,
T is 0.
spliter(0,[]).
spliter(N,L):-
N1 is floor(N/10),
X is N mod 10,
spliter(N1, L2),
L = [X|L2].
check(A,B):-
double(A,B,_).
double([],[],0).
double([H|T], [H1|T1], C):-
double(T,T1, C1),
C is C1 +1,
H1 is H*(1+ C mod 2).
sum_all([],0).
sum_all([H|T],Sum):-
sum_all(T,Subsum),
X is floor(H/10),
Y is H mod 10,
Sum is (Subsum + X + Y).