Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

6
Task/IBAN/Zkl/iban-1.zkl Normal file
View file

@ -0,0 +1,6 @@
var BN=Import("zklBigNum");
fcn validateIBAN(iban){
iban=iban-" \t";
alphaNums.matches(iban) and (ibans.find(iban[0,2])==iban.len()) and
( BN((iban[4,*]+iban[0,4]).apply("toInt",36)) % 97 == 1 )
}

12
Task/IBAN/Zkl/iban-2.zkl Normal file
View file

@ -0,0 +1,12 @@
fcn validateIBAN(iban){
iban=iban-" \t";
alphaNums.matches(iban) and (ibans.find(iban[0,2])==iban.len()) and
( (iban[4,*]+iban[0,4]).apply("toInt",36) : mod97(_) == 1 )
}
fcn mod97(str){
n:=0; m:=9; M:=0; while(N:=str[n,m]){
M=((M.toString()+N).toInt()) % 97;
n+=m; m=7;
}
M
}

10
Task/IBAN/Zkl/iban-3.zkl Normal file
View file

@ -0,0 +1,10 @@
var alphaNums=RegExp("^[0-9A-Z]+$");
var ibans= // Dictionary("AD":24, ...)
("AD24 AE23 AL28 AO25 AT20 AZ28 BA20 BE16 BF27 BG22 BH22 BI16 "
"BJ28 BR29 CG27 CH21 CI28 CM27 CR21 CV25 CY28 CZ24 DE22 DK18 "
"DO28 DZ24 EE20 EG27 ES24 FI18 FO18 FR27 GA27 GB22 GE22 GI23 "
"GL18 GR27 GT28 HR21 HU28 IE22 IL23 IR26 IS26 IT27 JO30 KW30 "
"KZ20 LB28 LI21 LT20 LU20 LV21 MC27 MD24 ME22 MG27 MK19 ML28 "
"MR27 MT31 MU30 MZ25 NL18 NO15 PK24 PL28 PS29 PT25 QA29 RO24 "
"RS22 SA24 SE24 SI19 SK24 SM27 SN28 TN24 TR26 UA29 VG24")
.split(" ").pump(D(),fcn(w){return(w[0,2],w[2,*].toInt())});

20
Task/IBAN/Zkl/iban-4.zkl Normal file
View file

@ -0,0 +1,20 @@
// all valid
T("GB82 WEST 1234 5698 7654 32","GB82WEST12345698765432",
"GR16 0110 1250 0000 0001 2300 695","GB29 NWBK 6016 1331 9268 19",
"SA03 8000 0000 6080 1016 7519","CH93 0076 2011 6238 5295 7",
"IL62 0108 0000 0009 9999 999")
.apply(validateIBAN).println();
// all invalid
T("gb82 west 1234 5698 7654 32","GB82 TEST 1234 5698 7654 32",
"GB82 WEST 1243 5698 7654 32","AE82 WEST 1234 5698 7654 32"
"IL62-0108-0000-0009-9999-999","US12 3456 7890 0987 6543 210",
"GR16 0110 1250 0000 0001 2300 695X","GT11 2222 3333 4444 5555 6666 7777",
"MK11 2222 3333 4444 555")
.apply(validateIBAN).println();
// white list from Scala
("AD1200012030200359100100 AE260211000000230064016 AL47212110090000000235698741 "
...
"CH9300762011623852957").split()
.apply(validateIBAN).toString(*).println();