We needed to find duplicate characters in multiple arrays for Saturday’s Advent of Code.
In the first part of the problem, it was among two arrays, so I did something quick like this:
This worked as expected, but in part 2, you needed to perform a similar search across three arrays.
I could have chained a second
select or duplicated the line entirely, but I figured there was a more straightforward way…and of course, in Ruby, there is almost always a more straightforward way.
I do not have a traditional comp sci background, so my mind rarely jumps to Bitwise operators, but in this case, this is the Bitwise
& operator is exactly what we needed.
@scott pointed this is not Bitwise when dealing with strings:
It is the unary and operator. On arrays, #& is a method that returns the set union of two arrays. On integers, it is indeed implemented as a bitwise and.
Even better, this easily scales across N arrays.