Range Extraction(Codewars 4kyu )
1. 问题
思路:将相邻数字分为一组,若相邻数字长度大于3,则用区间表示,否则写成单独的数字
solution([-6, -3, -2, -1, 0, 1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 17, 18, 19, 20])); // "-6,-3-1,3-5,7-11,14,15,17-20"
2.答案
function solution(list) {
return list.reduce((prev, curr) => prev.length && curr - prev[0].slice(-1)[0] === 1 ? [[...prev.shift(), curr], ...prev] : [[curr], ...prev], [])
.map(e => e.length <= 2 ? e.join() : `${e.shift()}-${e.pop()}`)
.reverse()
.join()
}
console.log(solution([-6, -3, -2, -1, 0, 1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 17, 18, 19, 20])); // "-6,-3-1,3-5,7-11,14,15,17-20"