Das war damals, aber heute sind alle auf IPv6 umgestiegen . (Richtig?)
Ihre Aufgabe ist es, ein Programm zu schreiben, das alle IPv6-Adressen ausgibt .
Sie sollten ein vollständiges Programm schreiben, das keine Eingaben vornimmt und IPv6-Adressen druckt, eine pro Zeile und keine andere Ausgabe. Ihr Programm muss alle 2 128 möglichen Adressen einschließlich ungültiger Adressen ausgeben. Jede Adresse muss genau einmal ausgedruckt werden. Sie können die Adressen in beliebiger Reihenfolge ausdrucken.
Jede Adresse kann vollständig ausgedruckt werden, wobei 8 Gruppen mit 4 hexadezimalen Ziffern durch Doppelpunkte getrennt sind, z
2001:0db8:85a3:0000:0000:8a2e:0370:7334
Sie können nach eigenem Ermessen die folgenden Standardabkürzungen aus RFC 5952 verwenden :
- Führende Nullen in einer Gruppe können weggelassen werden, es sei denn, dies
0
kann nicht weiter abgekürzt werden. ::
darf höchstens einmal pro Adresse verwendet werden, um eine Folge von einer oder mehreren Nullgruppen abzukürzen.- Bei den hexadezimalen Ziffern kann es sich um Klein- oder Großbuchstaben handeln.
Wenn Sie die Repräsentationsempfehlung von RFC 5952 (nur Kleinbuchstaben, kürzestmögliche Repräsentation, bei ::
Verwendung an mehreren Stellen so früh wie möglich) erreichen, erhalten Sie einen Bonus von -20% .
Aufgrund der Größe der Ausgabe wird nicht erwartet, dass Ihr Programm beendet wird, während wir dort sitzen. Ihr Programm kann irgendwann durch externe Mittel unterbrochen werden ( Ctrl+ C, Ausschalten der Stromversorgung, ...). Ihr Programm muss die Ausgabe als Stream erzeugen, damit es nach einer "angemessenen" Wartezeit einige Zeilen erzeugt hat. Grundsätzlich ist es nicht zulässig, eine riesige Zeichenfolge im Speicher zu erstellen, um sie am Ende zu drucken. Jedes Programm, dem auf einem „Standard“ -PC der Speicher ausgeht, wird disqualifiziert. (Wenn Ihr Programm jedoch ausreichend lange ausgeführt wurde, muss es alle IPv6-Adressen drucken und dann beenden.)
(Wenn diese Bedingung ein Problem für Webinterpreter darstellt, die das Programm bis zum Abschluss ausführen und dann die Ausgabe anzeigen lassen, und Sie keinen gehosteten Interpreter haben, testen Sie Ihr Programm mit einer kleineren Version des Problems und passen Sie es dann sorgfältig an zur Gänze 2 128. )
Ihre Punktzahl ist die Länge Ihres Programms in Bytes, multipliziert mit 0,8, wenn Sie den Bonus erhalten. Es ist Codegolf, also gewinnt die niedrigste Punktzahl.