IBAN: Difference between revisions
Content added Content deleted
(Haskell) |
(Added Bracmat example) |
||
Line 178: | Line 178: | ||
GB82 WEST 1234 5698 7654 33 is not valid. |
GB82 WEST 1234 5698 7654 33 is not valid. |
||
AE82 WEST 1234 5698 7654 32 is not valid.</pre> |
AE82 WEST 1234 5698 7654 32 is not valid.</pre> |
||
=={{header|Bracmat}}== |
|||
<lang bracmat>( ( IBAN-check |
|||
= table country cd len N c |
|||
. (AL.28) (AD.24) (AT.20) (AZ.28) (BE.16) (BH.22) (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) (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) (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) |
|||
: ?table |
|||
& @(!arg:?country [2 ?cd [4 ?arg) |
|||
& str$(!arg !country !cd):?arg |
|||
& ( !table:? (!country.?len) ? |
|||
& :?N |
|||
& ( @( !arg |
|||
: ? |
|||
( %@?c ? |
|||
& ( !c:# |
|||
| !c:~<A:~>Z |
|||
& asc$!c+-1*asc$A+10:?c |
|||
& 1+!len:?len |
|||
| !c:" "&:?c |
|||
| |
|||
) |
|||
& !N !c:?N |
|||
& ~ |
|||
) |
|||
) |
|||
| str$!N:?N:# |
|||
& ( @(!N:? [!len) |
|||
& ( mod$(!N,97):1&out$OK |
|||
| out$"wrong check digits" |
|||
) |
|||
| out$"wrong length" |
|||
) |
|||
| @(!N:? ~#%?c ?) |
|||
& out$(str$("invalid character: '" !c "'")) |
|||
) |
|||
| out$(str$("invalid country code: '" !country "'")) |
|||
) |
|||
) |
|||
& IBAN-check$"GB82 WEST 1234 5698 7654 32 9" |
|||
& IBAN-check$"GX82 WEST 1234 5698 7654 32" |
|||
& IBAN-check$"GB82 WEST 1234 5698 7654 32" |
|||
& IBAN-check$GB82WEST12345698765432 |
|||
& IBAN-check$"gb82 west 1234 5698 7654 32" |
|||
& IBAN-check$"GB82 TEST 1234 5698 7654 32" |
|||
& IBAN-check$"GB82 WEST 1243 5698 7654 32" |
|||
& IBAN-check$"GB82 west 1243 5698 7654 32" |
|||
);</lang> |
|||
Output: |
|||
<pre>wrong length |
|||
invalid country code: 'GX' |
|||
OK |
|||
OK |
|||
invalid country code: 'gb' |
|||
wrong check digits |
|||
wrong check digits |
|||
invalid character: 'w'</pre> |
|||
=={{header|C}}== |
=={{header|C}}== |