После каждого прохода ваш следующий проход будет в меньшем из двух составленных вами списков.
В какой-то момент вы ДОЛЖНЫ встретить пустой список, и это определит ваш номер. Например, давайте просто использовать 3-битные числа.
000
001
110
100
111
после первого прохода имеем
000
001
110
100
111
Затем мы смотрим на 2-й бит в первом списке, потому что он меньше (или равен) второму.
Мы бы разбили их на
000
001
empty list
обратите внимание, что файл, начинающийся с 01
, пуст, это означает, что нет чисел, начинающихся с 01
, поэтому отсутствуют 010
и 011
.
Причина, по которой мы в конечном итоге должны получить отсутствующий список, заключается в том, что мы выбираем меньший список для нашего следующего прохода каждый раз.