SEDOLs: Difference between revisions

Content added Content deleted
(Added Wren)
Line 3,995: Line 3,995:
Output as in task description.
Output as in task description.
The last code is printed as BOO30A Vowels are not allowed.
The last code is printed as BOO30A Vowels are not allowed.
</pre>

=={{header|Wren}}==
{{libheader|Wren-str}}
{{libheader|Wren-fmt}}
<lang ecmascript>import "/str" for Char
import "/fmt" for Conv

var sedol = Fn.new { |s|
if (!(s is String && s.count == 6)) return false
var weights = [1, 3, 1, 7, 3, 9]
var sum = 0
for (i in 0..5) {
var c = s[i]
if (!Char.isUpper(c) && !Char.isDigit(c)) return null
if ("AEIOU".contains(c)) return null
sum = sum + Conv.atoi(c, 36) * weights[i]
}
var cd = (10 - sum%10) % 10
return s + "%(cd)"
}

var tests = [
"710889",
"B0YBKJ",
"406566",
"B0YBLH",
"228276",
"B0YBKL",
"557910",
"B0YBKR",
"585284",
"B0YBKT",
"B00030",
"I23456"
]

for (test in tests) {
var a
var ans = (a = sedol.call(test)) ? a : "not valid"
System.print("%(test) -> %(ans)")
}</lang>

{{out}}
<pre>
B0YBKJ -> B0YBKJ7
406566 -> 4065663
B0YBLH -> B0YBLH2
228276 -> 2282765
B0YBKL -> B0YBKL9
557910 -> 5579107
B0YBKR -> B0YBKR5
585284 -> 5852842
B0YBKT -> B0YBKT7
B00030 -> B000300
I23456 -> not valid
</pre>
</pre>