--- title: SEDOLs id: 59d9c6bc214c613ba73ff012 challengeType: 5 --- ## Description
Task:

For each number list of 6-digit SEDOLs, calculate and append the checksum digit.

That is, given the input string on the left, your function should return the corresponding string on the right:

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

Check also that each input is correctly formed, especially with respect to valid characters allowed in a SEDOL string. Your function should return null on invalid input.

## Instructions
## Tests
```yml tests: - text: sedol is a function. testString: assert(typeof sedol === 'function', 'sedol is a function.'); - text: sedol('a') should return null. testString: assert(sedol('a') === null, "sedol('a') should return null."); - text: sedol('710889') should return '7108899'. testString: assert(sedol('710889') === '7108899', "sedol('710889') should return '7108899'."); - text: sedol('BOATER') should return null. testString: assert(sedol('BOATER') === null, "sedol('BOATER') should return null."); - text: sedol('228276') should return '2282765'. testString: assert(sedol('228276') === '2282765', "sedol('228276') should return '2282765'."); ```
## Challenge Seed
```js function sedol (input) { // Good luck! return true; } ```
## Solution
```js function sedol(input) { const checkDigit = sedolCheckDigit(input); if (checkDigit !== null) { return input + checkDigit; } return null; } const weight = [1, 3, 1, 7, 3, 9, 1]; function sedolCheckDigit(char6) { if (char6.search(/^[0-9BCDFGHJKLMNPQRSTVWXYZ]{6}$/) === -1) { return null; } let sum = 0; for (let i = 0; i < char6.length; i++) { sum += weight[i] * parseInt(char6.charAt(i), 36); } const check = (10 - (sum % 10)) % 10; return check.toString(); } ```