Skip to content

Instantly share code, notes, and snippets.

@olets
Created November 30, 2023 01:45
Show Gist options
  • Save olets/f66aca02e993fa4aadfe0af31663b755 to your computer and use it in GitHub Desktop.
Save olets/f66aca02e993fa4aadfe0af31663b755 to your computer and use it in GitHub Desktop.
function numsFromNumsAndRanges(numsAndRanges) {
const nums = new Set();
const numsAtStartOfRanges = new Set();
const numsAtEndOfRanges = new Set();
if (!numsAndRanges.length > 0) {
return { nums, numsAtStartOfRanges, numsAtEndOfRanges };
}
for (const numOrRange of numsAndRanges.split(',')) {
if (numOrRange.includes('-')) {
// range
let [first, last] = numOrRange.split('-');
numsAtStartOfRanges.add(Number(first));
numsAtEndOfRanges.add(Number(last));
let numsInRange = Array.from({ length: Number(last) - Number(first) + 1 }, (_, i) => Number(first) + i);
for (const num of numsInRange) {
nums.add(num);
}
continue;
}
// num
nums.add(Number(numOrRange));
numsAtStartOfRanges.add(Number(numOrRange));
numsAtEndOfRanges.add(Number(numOrRange));
}
return { nums, numsAtStartOfRanges, numsAtEndOfRanges };
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment