Number Runs
by Chase Wilson
JavaScript
let runs = []
function findTheEndOfRun(arr){
let end
for(let i = 0; i < arr.length - 1; i++) {
if(arr[i + 1] - arr[i] != 1) {
end = i;
return end;
}
}
}
function stringifyNumberRuns(arrOfNumbers) {
let currRun = []
let i = 0;
//case 1: [1]
if(arrOfNumbers.length == 1) {
let curr = arrOfNumbers[i]
currRun.push(curr)
runs.push(currRun)
return runs;
}
while(i < arrOfNumbers.length) {
let curr = arrOfNumbers[i]
currRun.push(curr)
let end = findTheEndOfRun(arrOfNumbers.slice(i, arrOfNumbers.length-1))
currRun.push(arrOfNumbers[end])
runs.push(currRun.join(':'))
i = end + 1
}
return runs.join(',')
}
console.log(stringifyNumberRuns([1])) //=> '1'
console.log(stringifyNumberRuns([1, 3])) //=> '1,3'
console.log(stringifyNumberRuns([1, 2])) //=> '1:2'
console.log(stringifyNumberRuns([1, 2, 3])) //=> '1:3'
console.log(stringifyNumberRuns([0, 2, 3, 4, 6, 7, 9])) //=> '0,2:4,6:7,9'