Un approccio facile da ricordare e facile da articolare in un'intervista sarebbe utilizzare il fatto che se si guardano tutti i numeri in N bit, ogni bit verrà impostato esattamente a metà di tali valori e non impostato in l'altra metà.
Se si itera su tutti i valori nel file e si mantengono 32 conteggi dei valori alla fine, si otterranno 32 valori che sono esattamente (2 ^ 32/2) o leggermente inferiori a quel valore. La differenza che il massimo (2 ^ 32/2) e il totale ti danno i bit totali impostati in ciascuna posizione dei valori mancanti.
Una volta ottenuto ciò, è possibile determinare tutti i possibili set di 4 valori che potrebbero dare quei totali. Detto questo, puoi quindi controllare nuovamente i valori nel file controllando eventuali valori che fanno parte di tali combinazioni. Quando ne trovi uno, le combinazioni contenenti quel valore vengono eliminate come possibilità. Una volta rimasta una sola combinazione possibile, hai una risposta.
Ad esempio usando un nibble, hai i seguenti valori:
1010
0110
1111
0111
1101
1001
0100
0101
0001
1011
1100
1110
I bit totali impostati in ogni posizione sono:
7867
Sottraendo quelli da 8 (4 ^ 2/2) otteniamo:
1021
Il che significa che ci sono questi seguenti possibili set di 4 valori:
1000
0000
0011
0010
1010
0001
0010
0000
(perdonami se ne ho perso qualcuno, lo faccio solo di vista)
E poi guardando nuovamente i numeri originali, troviamo subito 1010, il che significa che il primo set era la risposta.