Data update

This commit is contained in:
Ingy döt Net 2024-07-13 15:19:22 -07:00
parent 29a5eea0d4
commit 5c1bb7bfa9
2011 changed files with 35081 additions and 3229 deletions

View file

@ -1,23 +1,23 @@
val .isCusip = fn(.s) {
if .s is not string or len(.s) != 9 {
val isCusip = fn(s) {
if s is not string or len(s) != 9 {
return false
}
val .basechars = '0'..'9' ~ 'A'..'Z' ~ "*@#"
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
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
s[9]-'0' == (10-(sum rem 10)) rem 10
}
val .candidates = fw/037833100 17275R102 38259P508 594918104 68389X106 68389X105/
val candidates = fw/037833100 17275R102 38259P508 594918104 68389X106 68389X105/
for .c in .candidates {
writeln .c, ": ", if(.isCusip(.c): "good" ; "bad")
for c in candidates {
writeln c, ": ", if(isCusip(c): "good" ; "bad")
}

View file

@ -1,35 +1,37 @@
val .isCusip = fn(.s) {
if .s is not string or len(.s) != 9 {
val isCusip = fn(s) {
if s is not string or len(s) != 9 {
return false
}
val .sum = for[=0] .i of 8 {
val .c = .s[.i]
var .v = 0
val basechars = '0'..'9' ~ 'A'..'Z' ~ "*@#"
switch[and] .c {
val sum = for[=0] i of 8 {
val c = s[i]
var v = 0
switch[and] c {
case >= '0', <= '9':
.v = .c-'0'
v = c-'0'
case >= 'A', <= 'Z':
.v = .c-55 # .c-'A'+10
v = c-55 # c-'A'+10
case '*': .v = 36
case '@': .v = 37
case '#': .v = 38
case '*': v = 36
case '@': v = 37
case '#': v = 38
default: return false
}
if .i div 2: .v *= 2
_for += .v \ 10 + .v rem 10
if i div 2: v *= 2
_for += v \ 10 + v rem 10
}
.s[9]-'0' == (10-(.sum rem 10)) rem 10
s[9]-'0' == (10-(sum rem 10)) rem 10
}
val .candidates = w/037833100 17275R102 38259P508 594918104 68389X106 68389X105/
val candidates = fw/037833100 17275R102 38259P508 594918104 68389X106 68389X105/
for .c in .candidates {
writeln .c, ": ", if(.isCusip(.c): "good" ; "bad")
for c in candidates {
writeln c, ": ", if(isCusip(c): "good" ; "bad")
}