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'