Tak było wtedy, ale obecnie wszyscy przeszli na IPv6 . (Dobrze?)
Twoim zadaniem jest napisanie programu, który wypisze wszystkie adresy IPv6 .
Powinieneś napisać pełny program, który nie pobiera danych wejściowych i wypisuje adresy IPv6, po jednym w wierszu i bez innych danych wyjściowych. Twój program musi wydrukować wszystkie 2 128 możliwych adresów, w tym nieprawidłowe. Każdy adres musi zostać wydrukowany dokładnie raz. Możesz wydrukować adresy w dowolnej kolejności.
Każdy adres może być wydrukowany w całości, z 8 grupami 4 cyfr szesnastkowych oddzielonych dwukropkami, np
2001:0db8:85a3:0000:0000:8a2e:0370:7334
Możesz, według własnego uznania, użyć dowolnego ze standardowych skrótów z RFC 5952 :
- Zera wiodące w grupie można pominąć, z tym wyjątkiem, że
0
nie można ich dalej skracać. ::
można użyć maksymalnie raz na adres, aby skrócić sekwencję jednej lub więcej grup zerowych.- Cyfry szesnastkowe mogą używać małych lub wielkich liter.
Jeśli osiągniesz zalecenie dotyczące reprezentacji z RFC 5952 (tylko małe litery, najkrótsza możliwa reprezentacja, z ::
jak najwcześniejszym wykorzystaniem, jeśli istnieje wiele miejsc, w których można jej użyć), otrzymasz bonus -20% .
Ze względu na rozmiar danych wyjściowych, twój program nie powinien zakończyć się, gdy tam siedzimy. W pewnym momencie twój program może zostać przerwany za pomocą środków zewnętrznych ( Ctrl+ C, odłączenie zasilania,…). Twój program musi generować dane wyjściowe w postaci strumienia, aby po „rozsądnym” odczekaniu wygenerował kilka wierszy. Zasadniczo nie jest dozwolone budowanie gigantycznego ciągu w pamięci tylko w celu wydrukowania go na końcu. Każdy program, który zabraknie pamięci na „standardowym” komputerze, zostanie zdyskwalifikowany. (Niemniej jednak, jeśli program pozostawiono na działanie przez wystarczająco długi czas, musi wydrukować wszystkie adresy IPv6, a następnie wyjść).
(Jeśli ten warunek stanowi problem dla interpreterów internetowych, którzy uruchamiają program do zakończenia, a następnie pozwalają zobaczyć wynik, a nie masz hostowanego tłumacza, przetestuj program na mniejszej wersji problemu, a następnie ostrożnie go dostosuj do pełnego 2 128 ).
Twój wynik to długość twojego programu w bajtach, pomnożona przez 0,8, jeśli otrzymasz bonus. To jest golf golfowy, więc wygrywa najniższy wynik.