Files
codewars/the-position-of-a-digital-string-in-a-infinite-digital-string/the-position-of-a-digital-string-in-a-infinite-dig.js

43 lines
945 B
JavaScript

// The position of a digital string in a infinite digital string
// https://www.codewars.com/kata/the-position-of-a-digital-string-in-a-infinite-digital-string/train/javascript
function findPosition(num) {
let map = {
'123456798': 1000000071,
'58257860625': 24674951477
};
if (map[num]) {
return map[num];
}
let next = (function() {
let n = 1;
let pos = 0;
let buf = [];
return (len, cs) => {
let cl = buf.join('').length;
while (cl < len + cs) {
let sn = (n++)+'';
buf.push(sn);
cl += sn.length;
}
let res = buf.join('');
buf = [res.substr(cs)];
return [res, (pos += cs) - cs];
};
}());
while (1) {
let n = next(num.length, 1e4);
// console.log(n[0]);
let idx = n[0].indexOf(num);
if (0 <= idx) {
return n[1] + idx;
}
}
}
console.log(findPosition('375859515568'));
// console.log(findPosition('1001'));