tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
19
Task/SEDOLs/Icon/sedols.icon
Normal file
19
Task/SEDOLs/Icon/sedols.icon
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
procedure main()
|
||||
every write(sedol("710889"|"B0YBKJ"|"406566"|"B0YBLH"|"228276"|
|
||||
"B0YBKL"|"557910"|"B0YBKR"|"585284"|"B0YBKT"|"B00030"))
|
||||
end
|
||||
|
||||
procedure sedol(x) #: return the completed sedol with check digit
|
||||
static w,c
|
||||
initial {
|
||||
every (i := -1, c := table())[!(&digits||&ucase)] := i +:= 1 # map chars
|
||||
every c[!"AEIOU"] := &null # delete vowels
|
||||
w := [1,3,1,7,3,9] # weights
|
||||
}
|
||||
|
||||
if *(x := map(x,&lcase,&ucase)) = *w then { # match lengths
|
||||
every (t :=0, i := 1 to *x) do
|
||||
t +:= \c[x[i]]*w[i] | fail # accumulate weighted chars
|
||||
return x || (10 - (t%10)) % 10 # complete
|
||||
}
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue