val isCusip = fn(s string) { if len(s) != 9 : return false val basechars = '0'..'9' ~ 'A'..'Z' ~ "*@#" val sum = for[=0] i of 8 { val c = s[i] var v = 0 switch[and] c { case >= '0', <= '9': v = c-'0' case >= 'A', <= 'Z': v = c-55 # c-'A'+10 case '*': v = 36 case '@': v = 37 case '#': v = 38 default: return false } 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") }