Uma abordagem fácil de lembrar e articular em uma entrevista seria usar o fato de que, se você olhar para todos os números em N bits, cada bit será definido exatamente na metade desses valores e não na outra metade .
Se você iterar sobre todos os valores no arquivo e manter 32 contagens dos valores no final, você terá 32 valores exatamente (2 ^ 32/2) ou ligeiramente inferiores a esse valor. A diferença que máximo (2 ^ 32/2) e o total fornece o total de bits definido em cada posição dos valores ausentes.
Depois de ter isso, você pode determinar todos os conjuntos possíveis de 4 valores que poderiam fornecer esses totais. Dado isso, é possível revisar os valores no arquivo novamente, verificando os valores que fazem parte dessas combinações. Quando você encontra uma, as combinações que contêm esse valor são eliminadas como possibilidades. Depois de ter apenas uma combinação possível, você responde.
Por exemplo, usando um nibble, você tem os seguintes valores:
1010
0110
1111
0111
1101
1001
0100
0101
0001
1011
1100
1110
O total de bits definidos em cada posição é:
7867
Subtraindo os de 8 (4 ^ 2/2), obtemos:
1021
O que significa que existem os seguintes conjuntos possíveis de 4 valores:
1000
0000
0011
0010
1010
0001
0010
0000
(me perdoe se eu perdi alguma, estou apenas fazendo isso de vista)
E então, olhando para os números originais novamente, encontramos 1010 imediatamente, o que significa que o primeiro conjunto foi a resposta.