Skip to content

Instantly share code, notes, and snippets.

@rfxDarth
Created March 12, 2022 15:10
Show Gist options
  • Save rfxDarth/27f2d5fb04e33a544d329bfb092a6a29 to your computer and use it in GitHub Desktop.
Save rfxDarth/27f2d5fb04e33a544d329bfb092a6a29 to your computer and use it in GitHub Desktop.
var testCases = [
[[1, 2, 3, 7, 8, 9], "1-3, 7-9"],
[[1, 2, 3, 1, 2, 3], "1-3, 1-3"],
[[0, 1, 1, 2], "0-1, 1-2"],
[[0, 7, 6, 5], "0, 7, 6, 5"],
[[0], '0'],
[[], '']
]
for (let i = 0; i < testCases.length; i++) {
let [arr,expected] = testCases[i];
console.info(`Testing case ${i+1}`)
let result = compact(arr);
if(result===expected) {
console.info(`Test ${i+1} passed`)
} else {
console.error(`Expected: ${expected} but got ${result}`)
break;
}
}
function compact(arr){
if(arr.length===0) return '';
let prevVal = arr[0];
let result = [];
let initialValue = prevVal;
if(arr.length===1) return String(initialValue);
for(let i=1; i<arr.length; i++){
let curVal = arr[i];
if(curVal !== prevVal + 1){
if(initialValue===prevVal){
result.push(initialValue);
} else {
result.push(initialValue + '-' + prevVal)
}
initialValue = curVal;
}
if(i===arr.length-1){
if(initialValue===curVal){
result.push(initialValue);
} else {
result.push(initialValue + '-' + curVal)
}
}
prevVal = curVal;
}
return result.join(', ');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment