В статье упоминается 9 слоев zip-файлов, так что это не простой случай, когда нужно собрать несколько нулей. Почему 9, почему 10 файлов в каждом?
Во-первых, статья в Википедии в настоящее время говорит о 5 слоях по 16 файлов в каждом. Не уверен, откуда исходит несоответствие, но это не так уж важно. Реальный вопрос заключается в том, зачем в первую очередь использовать вложение.
DEFLATE, единственный обычно поддерживаемый метод сжатия для zip-файлов *, имеет максимальный коэффициент сжатия 1032. Это может быть достигнуто асимптотически для любой повторяющейся последовательности 1-3 байта. Независимо от того, что вы делаете с zip-файлом, если он использует только DEFLATE, распакованный размер будет в 1032 раза больше размера исходного zip-файла.
Таким образом, необходимо использовать вложенные zip-файлы для достижения действительно невероятных коэффициентов сжатия. Если у вас есть 2 уровня сжатия, максимальное отношение становится 1032 ^ 2 = 1065024. Для 3 это 1099104768 и так далее. Для 5 слоев, используемых в 42.zip, теоретическая максимальная степень сжатия составляет 1170572956434432. Как вы можете видеть, фактический 42.zip далек от этого уровня. Отчасти это накладные расходы на формат zip, а отчасти то, что им просто было все равно.
Если бы мне пришлось угадывать, я бы сказал, что файл 42.zip был создан путем простого создания большого пустого файла, его многократного архивирования и копирования. Не делается попытка раздвинуть границы формата или максимизировать сжатие или что-либо еще - они просто произвольно отобрали 16 копий на слой. Задача состояла в том, чтобы создать большую полезную нагрузку без особых усилий.
Примечание: другие форматы сжатия, такие как bzip2, предлагают намного, намного, намного большие максимальные коэффициенты сжатия. Однако большинство парсеров zip их не принимают.
P.S. Можно создать zip-файл, который будет распакован в свою копию (quine). Вы также можете сделать один, который разархивирует несколько копий себя. Поэтому, если вы рекурсивно разархивируете файл навсегда, максимально возможный размер будет бесконечным. Единственным ограничением является то, что он может увеличиваться максимум на 1032 за каждую итерацию.
P.P.S. На рисунке 1032 предполагается, что данные файла в zip-файле не пересекаются. Одна из особенностей формата zip-файла заключается в том, что он имеет центральный каталог, в котором перечислены файлы в архиве и смещения к данным файла. Если вы создадите несколько записей в файлах, указывающих на одни и те же данные, вы можете достичь гораздо более высоких коэффициентов сжатия даже без вложенности, но такой zip-файл может быть отклонен синтаксическими анализаторами.