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