...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
def checkdigit(idWithoutCheckDigit) { idWithoutCheckDigit = idWithoutCheckDigit.trim().toUpperCase() sum = 0 (0..<idWithoutCheckDigit.length()).each { i -> char ch = idWithoutCheckDigit[-(i+1)] if (!'0123456789ABCDEFGHIJKLMNOPQRSTUVYWXZ_'.contains(ch.toString())) throw new Exception("$ch is an invalid character") digit = (int)ch - 48; sum += i % 2 == 0 ? 2*digit - (int)(digit/5)*9 : digit } (10 - ((Math.abs(sum)+10) % 10)) % 10 } // Validate our algorithm assert checkdigit('12') == 5 assert checkdigit('123') == 0 assert checkdigit('1245496594') == 3 assert checkdigit('TEST') == 4 assert checkdigit('Test123') == 7 assert checkdigit('00012') == 5 assert checkdigit('9') == 1 assert checkdigit('999') == 3 assert checkdigit('999999') == 6 assert checkdigit('CHECKDIGIT') == 7 assert checkdigit('EK8XO5V9T8') == 2 assert checkdigit('Y9IDV90NVK') == 1 assert checkdigit('RWRGBM8C5S') == 5 assert checkdigit('OBYY3LXR79') == 5 assert checkdigit('Z2N9Z3F0K3') == 2 assert checkdigit('ROBL3MPLSE') == 9 assert checkdigit('VQWEWFNY8U') == 9 assert checkdigit('45TPECUWKJ') == 1 assert checkdigit('6KWKDFD79A') == 8 assert checkdigit('HXNPKGY4EX') == 3 assert checkdigit('91BT') == 2 try { checkdigit ("12/3") assert false } catch(e) { } |
...