Это было тогда, но сейчас все перешли на IPv6 . (Правильно?)
Ваша задача - написать программу, которая распечатывает все адреса IPv6. .
Вы должны написать полную программу, которая не требует ввода и печатает адреса IPv6, по одному на строку, и никаких других выходных данных. Ваша программа должна распечатать все 2 128 возможных адресов, включая недействительные. Каждый адрес должен быть напечатан ровно один раз. Вы можете распечатать адреса в любом порядке.
Каждый адрес может быть напечатан полностью, с 8 группами из 4 шестнадцатеричных цифр, разделенных двоеточиями, например
2001:0db8:85a3:0000:0000:8a2e:0370:7334
Вы можете по своему усмотрению использовать любые стандартные сокращения из RFC 5952 :
- Начальные нули в группе могут быть опущены, за исключением того, что
0
не могут быть сокращены далее. ::
может использоваться не более одного раза для каждого адреса, чтобы сократить последовательность из одной или нескольких групп, состоящих из всех нулей.- Шестнадцатеричные цифры могут использовать строчные или прописные буквы.
Если вы достигнете рекомендации по представлению из RFC 5952 (только строчные буквы, самое короткое из возможных представлений, которое ::
используется как можно раньше, если есть несколько мест, где его можно использовать), вы получите бонус -20% .
Из-за размера вывода ваша программа не должна завершиться, пока мы сидим там. В какой-то момент ваша программа может быть прервана внешними средствами ( Ctrl+ C, отключение питания,…). Ваша программа должна выводить данные в виде потока, чтобы после «разумного» ожидания она выдавала несколько строк. В принципе, создание гигантской строки в памяти только для печати в конце не допускается. Любая программа, которая исчерпала бы память на «стандартном» ПК, дисквалифицируется. (Тем не менее, если ваша программа была запущена достаточно долго, она должна распечатать все адреса IPv6 и затем выйти.)
(Если это условие является проблемой для веб-интерпретаторов, которые запускают программу до завершения, а затем позволяют увидеть выходные данные, и у вас нет размещенного интерпретатора, протестируйте свою программу на уменьшенной версии проблемы, а затем тщательно отрегулируйте ее в полной мере 2 128. )
Ваша оценка - это длина вашей программы в байтах, умноженная на 0,8, если вы получите бонус. Это код гольф, поэтому выигрывает самая низкая оценка.