--- 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(); } ```