CUSIP: Difference between revisions

Content deleted Content added
Added Dyalect programming language
Langurmonkey (talk | contribs)
added langur language example
Line 1,329: Line 1,329:
68389X105 -> correct
68389X105 -> correct
</pre>
</pre>

=={{header|Langur}}==
<lang Langur>val .isCusip = f(.s) {
if not isString(.s) or len(.s) != 9 {
return false
}

var .sum = 0
for .i = 1; .i < 9; .i+=1 {
val .c = stringToCp .s, .i
var .v = 0

given .c, .c {
case >= '0', <= '9':
.v = .c - '0'

case >= 'A', <= 'Z':
val .p = .c - 'A' + 1
.v = .p + 9

case '*', _: .v = 36
case '@', _: .v = 37
case '#', _: .v = 38

default: return false
}

if .i // 2 == 0 {
.v x= 2
}

.sum += .v \ 10 + .v mod 10
}

stringToCp(.s, 9) - 48 == (10 - (.sum mod 10)) mod 10
}

val .candidates = [
"037833100",
"17275R102",
"38259P508",
"594918104",
"68389X106",
"68389X105",
]

for .c in .candidates {
writeln .c, ": ", if(.isCusip(.c): "good" ; "bad")
}</lang>

{{out}}
<pre>037833100: good
17275R102: good
38259P508: good
594918104: good
68389X106: bad
68389X105: good</pre>


=={{header|Lua}}==
=={{header|Lua}}==