Are you participating in the Advent of code this year?
If you don't know what the advent of code is, it's a website where you'll find a daily challenge (every day it gets harder). It's a really fun event, you should participate!
For day #5, I starter with such complicated solutions... Took me a while to realise that this one was probably the easier we had to tackle since the beginning!
In the end, no need to do any binary operation. You just need to filter an array:
const allIds = tickets.map((ticket) => parseInt( ticket .split("") .map((char) => (char === "B" || char === "R" ? 1 : 0)) .join(""), 2 ) ); const min = Math.min(...allIds); const max = Math.max(...allIds); const possibilities = Array.from(Array(max).keys()).slice(min); const [seat] = possibilities.filter((p) => !allIds.includes(p));
Feel free to share yours in the comments!