C'était à l'époque, mais aujourd'hui, tout le monde est passé à IPv6 . (Droite?)
Votre tâche consiste à écrire un programme imprimant toutes les adresses IPv6 .
Vous devez écrire un programme complet ne prenant aucune entrée et imprimant les adresses IPv6, une par ligne, et aucune autre sortie. Votre programme doit imprimer les 2 128 adresses possibles, y compris les adresses non valides. Chaque adresse doit être imprimée exactement une fois. Vous pouvez imprimer les adresses dans n'importe quel ordre.
Chaque adresse peut être imprimée en entier, avec 8 groupes de 4 chiffres hexadécimaux séparés par des points, par exemple
2001:0db8:85a3:0000:0000:8a2e:0370:7334
Vous pouvez, à votre discrétion, utiliser l’une des abréviations standard du RFC 5952 :
- Les zéros non significatifs d'un groupe peuvent être omis, à l'exception de ceux qui
0
ne peuvent pas être abrégés davantage. ::
peut être utilisé au plus une fois par adresse pour abréger une séquence d'un ou de plusieurs groupes entièrement nuls.- Les chiffres hexadécimaux peuvent utiliser des minuscules ou des majuscules.
Si vous atteignez la recommandation de représentation de la RFC 5952 (lettres minuscules uniquement, représentation la plus courte possible, ::
utilisée le plus tôt possible s'il existe plusieurs endroits où elle peut être utilisée), vous obtenez un bonus de -20% .
En raison de la taille de la sortie, votre programme ne devrait pas se terminer tant que nous resterons assis. Votre programme peut être interrompu par des moyens externes à un moment donné ( Ctrl+ C, coupure de courant,…). Votre programme doit produire une sortie sous forme de flux, afin qu'après une attente «raisonnable», il ait généré des lignes. Fondamentalement, la construction d'une chaîne de caractères géante en mémoire uniquement pour l'imprimer à la fin n'est pas autorisée. Tout programme qui manquerait de mémoire sur un PC «standard» est disqualifié. (Néanmoins, si votre programme doit être exécuté suffisamment longtemps, il doit imprimer toutes les adresses IPv6 puis quitter.)
(Si cette condition pose un problème pour les interprètes Web qui exécutent le programme jusqu'à la fin, puis vous permettent d'afficher le résultat et que vous ne disposez pas d'un interprète hébergé, testez votre programme sur une version plus petite du problème, puis ajustez-le soigneusement. au maximum 2 128. )
Votre score est la longueur en octets de votre programme, multipliée par 0,8 si vous obtenez le bonus. C'est le code de golf, donc le score le plus bas gagne.