val .isCusip = fn(.s) { if .s is not string or len(.s) != 9 { return false } val .basechars = '0'..'9' ~ 'A'..'Z' ~ "*@#" val .sum = for[=0] .i of 8 { var .v = index(s2s(.s, .i), .basechars) 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") }