Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
37
Task/SEDOLs/E/sedols.e
Normal file
37
Task/SEDOLs/E/sedols.e
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
def weights := [1,3,1,7,3,9]
|
||||
def Digit := ('0'..'9')
|
||||
def Letter := ('B'..'D'|'F'..'H'|'J'..'N'|'P'..'T'|'V'..'Z')
|
||||
def sedolCharValue(c) {
|
||||
switch (c) {
|
||||
match digit :Digit { return digit - '0' }
|
||||
match letter :Letter {
|
||||
return letter - 'A'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def checksum(sedol :String) {
|
||||
require(sedol.size() == 6)
|
||||
var sum := 0
|
||||
for i => c in sedol {
|
||||
sum += weights[i] * sedolCharValue(c)
|
||||
}
|
||||
return E.toString((10 - sum %% 10) %% 10)
|
||||
}
|
||||
|
||||
def addChecksum(sedol :String) {
|
||||
return sedol + checksum(sedol)
|
||||
}
|
||||
|
||||
for sedol in "710889
|
||||
B0YBKJ
|
||||
406566
|
||||
B0YBLH
|
||||
228276
|
||||
B0YBKL
|
||||
557910
|
||||
B0YBKR
|
||||
585284
|
||||
B0YBKT".trim().split("\n") {
|
||||
println(addChecksum(sedol.trim()))
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue