SEDOLs: Difference between revisions
Content added Content deleted
(Updated for Nim 1.4: added missing parameter types. Done several other changes/improvements. Added output.) |
Drkameleon (talk | contribs) (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}}== |