Un enfoque que es fácil de recordar y fácil de articular en una entrevista sería utilizar el hecho de que si observa todos los números en N bits, cada bit se establecerá exactamente en la mitad de esos valores y no en la otra mitad .
Si itera sobre todos los valores en el archivo y mantiene 32 recuentos de los valores al final, terminará con 32 valores que son exactamente (2 ^ 32/2) o un poco menos que ese valor. La diferencia entre el máximo (2 ^ 32/2) y el total le da el total de bits establecidos en cada posición de los valores faltantes.
Una vez que tenga eso, puede determinar todos los conjuntos posibles de 4 valores que podrían dar esos totales. Dado eso, puede revisar los valores en el archivo nuevamente buscando cualquier valor que sea parte de esas combinaciones. Cuando encuentra uno, las combinaciones que contienen ese valor se eliminan como posibilidades. Una vez que solo le quede una combinación posible, tendrá su respuesta.
Por ejemplo, usando un mordisco, tiene los siguientes valores:
1010
0110
1111
0111
1101
1001
0100
0101
0001
1011
1100
1110
El total de bits establecidos en cada posición es:
7867
Restando los de 8 (4 ^ 2/2) obtenemos:
1021
Lo que significa que existen los siguientes conjuntos posibles de 4 valores:
1000
0000
0011
0010
1010
0001
0010
0000
(perdóname si me he perdido alguno, solo estoy haciendo esto de vista)
Y luego, mirando nuevamente los números originales, encontramos 1010 de inmediato, lo que significa que el primer conjunto fue la respuesta.