RosettaCodeData/Task/SEDOLs/Phix/sedols.phix
2016-12-05 23:44:36 +01:00

32 lines
761 B
Text

type string6(object s)
return string(s) and length(s)=6
end type
type sedolch(integer ch)
return ch>='0' and ch<='Z' and (ch<='9' or ch>='A') and not find(ch,"AEIOU")
end type
function sedol(string6 t)
sedolch c
integer s = 0
for i=1 to 6 do
c = t[i]
s += iff(c>='A'?c-'A'+10:c-'0')*{1,3,1,7,3,9}[i]
end for
return t & mod(10-mod(s,10),10)+'0'
end function
constant tests = {"710889",
"B0YBKJ",
"406566",
"B0YBLH",
"228276",
"B0YBKL",
"557910",
"B0YBKR",
"585284",
"B0YBKT",
"B00030"}
for i=1 to length(tests) do
?sedol(tests[i])
end for