in reply to Re^6: Need a faster way to find matches
in thread Need a faster way to find matches
Yes, I see it now.
I must have misunderstood your condition "do not share any common bits" to mean ~($i1 XOR $i2) instead of $i1 & $i2. For example, the two numbers in the first example do "share" common bits in the sense that both bits are 0. In this case the only valid value for a given $i1 would be ~$i1 and nothing else.
However, if the condition is $i1 & $i2 == 0, then you're right, there are several possible $i2's.
Still, you may be still better off generating the list of possible values for every existing element of the array and check those instead of blindly doing all comparisons.
I must have misunderstood your condition "do not share any common bits" to mean ~($i1 XOR $i2) instead of $i1 & $i2. For example, the two numbers in the first example do "share" common bits in the sense that both bits are 0. In this case the only valid value for a given $i1 would be ~$i1 and nothing else.
However, if the condition is $i1 & $i2 == 0, then you're right, there are several possible $i2's.
Still, you may be still better off generating the list of possible values for every existing element of the array and check those instead of blindly doing all comparisons.
In Section
Seekers of Perl Wisdom