Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
34
Task/IBAN/Picat/iban-1.picat
Normal file
34
Task/IBAN/Picat/iban-1.picat
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
go =>
|
||||
IBAN = "GB82 WEST 1234 5698 7654 32",
|
||||
println(IBAN=iban(IBAN)),
|
||||
nl.
|
||||
|
||||
iban(IBAN) = Ret =>
|
||||
nations(Nations),
|
||||
Ret = [],
|
||||
IBAN2 = IBAN.delete_all(' ').to_uppercase(),
|
||||
Len = IBAN2.length,
|
||||
Len > 2, % sanity check
|
||||
if Len != Nations.get(slice(IBAN2,1,2),0).to_integer() then
|
||||
Ret := ["wrong country length"]
|
||||
end,
|
||||
IBAN3 = slice(IBAN2,5,Len) ++ slice(IBAN2,1,4),
|
||||
if [convert(C) : C in IBAN3].join('').to_integer() mod 97 != 1 then
|
||||
Ret := Ret ++ ["bad mod"]
|
||||
end,
|
||||
if Ret == [] then Ret := "ok" end.
|
||||
|
||||
|
||||
% convert char: 1=1,...9=9, A=10, B=11,Z=35
|
||||
convert(C) = cond(ord(C)-65 >= 0,ord(C)-55,ord(C)-48).to_string().
|
||||
|
||||
% Lengths for different nations.
|
||||
nations(Nations) =>
|
||||
Nations = new_map(
|
||||
["AL"=28, "AD"=24, "AT"=20, "AZ"=28, "BH"=22, "BE"=16, "BA"=20, "BR"=29, "BG"=22, "CR"=21,
|
||||
"HR"=21, "CY"=28, "CZ"=24, "DK"=18, "DO"=28, "EE"=20, "FO"=18, "FI"=18, "FR"=27, "GE"=22,
|
||||
"DE"=22, "GI"=23, "GR"=27, "GL"=18, "GT"=28, "HU"=28, "IS"=26, "IE"=22, "IL"=23, "IT"=27,
|
||||
"JO"=30, "KZ"=20, "KW"=30, "LV"=21, "LB"=28, "LI"=21, "LT"=20, "LU"=20, "MK"=19, "MT"=31,
|
||||
"MR"=27, "MU"=30, "MC"=27, "MD"=24, "ME"=22, "NL"=18, "NO"=15, "PK"=24, "PS"=29, "PL"=28,
|
||||
"PT"=25, "QA"=29, "RO"=24, "SM"=27, "SA"=24, "RS"=22, "SK"=24, "SI"=19, "ES"=24, "SE"=24,
|
||||
"CH"=21, "TN"=24, "TR"=26, "AE"=23, "GB"=22, "VG"=24]).
|
||||
19
Task/IBAN/Picat/iban-2.picat
Normal file
19
Task/IBAN/Picat/iban-2.picat
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
go2 =>
|
||||
Ibans = ["GB82 WEST 1234 5698 7654 32",
|
||||
"gb82 WEST 1234 5698 7654 32",
|
||||
"GB82WEST12345698765432",
|
||||
"GB82 WEST 234 5698 7654 32",
|
||||
"GB82 WEST 1234 5698 7654 33",
|
||||
"AE82 WEST 1234 5698 7654 32",
|
||||
|
||||
"GB82 TEST 1234 5698 7654 32",
|
||||
"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"
|
||||
],
|
||||
foreach(IBAN in Ibans)
|
||||
println(IBAN=iban(IBAN))
|
||||
end,
|
||||
nl.
|
||||
Loading…
Add table
Add a link
Reference in a new issue