Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
33
Task/CUSIP/Kotlin/cusip.kotlin
Normal file
33
Task/CUSIP/Kotlin/cusip.kotlin
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
// version 1.1.0
|
||||
|
||||
fun isCusip(s: String): Boolean {
|
||||
if (s.length != 9) return false
|
||||
var sum = 0
|
||||
for (i in 0..7) {
|
||||
val c = s[i]
|
||||
var v = when (c) {
|
||||
in '0'..'9' -> c.toInt() - 48
|
||||
in 'A'..'Z' -> c.toInt() - 55 // lower case letters apparently invalid
|
||||
'*' -> 36
|
||||
'@' -> 37
|
||||
'#' -> 38
|
||||
else -> return false
|
||||
}
|
||||
if (i % 2 == 1) v *= 2 // check if odd as using 0-based indexing
|
||||
sum += v / 10 + v % 10
|
||||
}
|
||||
return s[8].toInt() - 48 == (10 - (sum % 10)) % 10
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val candidates = listOf(
|
||||
"037833100",
|
||||
"17275R102",
|
||||
"38259P508",
|
||||
"594918104",
|
||||
"68389X106",
|
||||
"68389X105"
|
||||
)
|
||||
for (candidate in candidates)
|
||||
println("$candidate -> ${if(isCusip(candidate)) "correct" else "incorrect"}")
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue