SEDOLs: Difference between revisions

Content added Content deleted
(Updated for Nim 1.4: added missing parameter types. Done several other changes/improvements. Added output.)
(Added Arturo implementation)
Line 382: Line 382:
B0YBKT7
B0YBKT7
B000300"</lang>
B000300"</lang>

=={{header|Arturo}}==

<lang rebol>ord0: to :integer `0`
ord7: to :integer `7`
c2v: function [c][
ordC: to :integer c
if? c < `A` -> return ordC - ord0
else -> return ordC - ord7
]

weight: [1 3 1 7 3 9]

checksum: function [sedol][
val: new 0
loop .with:'i sedol 'ch ->
'val + (weight \ i) * c2v ch
return to :char ord0 + (10 - val % 10) % 10
]

sedols: [
"710889" "B0YBKJ" "406566" "B0YBLH"
"228276" "B0YBKL" "557910" "B0YBKR"
"585284" "B0YBKT" "B00030"
]

loop sedols 'sed ->
print [sed "->" sed ++ checksum sed]</lang>

{{out}}

<pre>710889 -> 7108899
B0YBKJ -> B0YBKJ7
406566 -> 4065663
B0YBLH -> B0YBLH2
228276 -> 2282765
B0YBKL -> B0YBKL9
557910 -> 5579107
B0YBKR -> B0YBKR5
585284 -> 5852842
B0YBKT -> B0YBKT7
B00030 -> B000300</pre>


=={{header|AutoHotkey}}==
=={{header|AutoHotkey}}==