21 lines
514 B
Text
21 lines
514 B
Text
val isCusip = fn(s string) {
|
|
if len(s) != 9 : return false
|
|
|
|
val basechars = '0'..'9' ~ 'A'..'Z' ~ "*@#"
|
|
|
|
val sum = for[=0] i of 8 {
|
|
var v = index(basechars, by=s2s(s, of=i))
|
|
if not v: return false
|
|
v = v[1]-1
|
|
if i div 2: v *= 2
|
|
_for += v \ 10 + v rem 10
|
|
}
|
|
|
|
s[9]-'0' == (10-(sum rem 10)) rem 10
|
|
}
|
|
|
|
val candidates = fw/037833100 17275R102 38259P508 594918104 68389X106 68389X105/
|
|
|
|
for c in candidates {
|
|
writeln c, ": ", if(isCusip(c): "good" ; "bad")
|
|
}
|