Validate International Securities Identification Number: Difference between revisions

(Added Uiua solution)
 
Line 2,104:
The luhn test is repeated here for simplicity.
 
<syntaxhighlight lang="langur">val .luhntest = fn(.s) {
val luhntest = fn(s) {
val .t = [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
val .numberst = s2n[0, .s2, 4, 6, 8, 1, 3, 5, 7, 9]
val .oddevennumbers = len(.numbers)s rem-> 2s2n
val oddeven = len(numbers) rem 2
 
for[=0] .i of .numbers {
_for += if .i rem 2 == .oddeven {
.numbers[.i]
} else {
.t[.numbers[.i]+1]
}
} div 10
}
 
val .isintest = fn(.s) {
.s -> re/^[A-Z][A-Z][0-9A-Z]{9}[0-9]$/ and
.luhntest(joins -> s2n .s)-> join -> luhntest
}
 
val .tests = {
"US0378331005": true,
"US0373831005": false,
Line 2,133 ⟶ 2,134:
}
 
for .key in sort(keys .(tests)) {
val .pass = .isintest(.key)
write .key, ": ", .pass
writeln if(.pass == .tests[.key]: ""; " (ISIN TEST FAILED)")
}
}</syntaxhighlight>
 
{{out}}
1,006

edits