Esto fue entonces, pero hoy en día todo el mundo ha cambiado a IPv6 . (¿Derecho?)
Su tarea es escribir un programa que imprima todas las direcciones IPv6 .
Debe escribir un programa completo que no reciba entradas e imprima direcciones IPv6, una por línea y ninguna otra salida. Su programa debe imprimir las 2 128 direcciones posibles, incluidas las no válidas. Cada dirección debe imprimirse exactamente una vez. Puede imprimir las direcciones en cualquier orden.
Cada dirección puede imprimirse en su totalidad, con 8 grupos de 4 dígitos hexadecimales separados por dos puntos, p. Ej.
2001:0db8:85a3:0000:0000:8a2e:0370:7334
Puede, a su discreción, usar cualquiera de las abreviaturas estándar de RFC 5952 :
- Los ceros a la izquierda en un grupo pueden omitirse, excepto que
0
no pueden abreviarse más. ::
se puede usar como máximo una vez por dirección para abreviar una secuencia de uno o más grupos todos cero.- Los dígitos hexadecimales pueden usar minúsculas o mayúsculas.
Si cumple con la recomendación de representación de RFC 5952 (solo letras minúsculas, la representación más corta posible, se ::
usa lo antes posible si hay varios lugares donde se puede usar), obtiene un bono de -20% .
Debido al tamaño de la salida, no se espera que su programa termine mientras estamos sentados allí. Su programa puede ser interrumpido por medios externos en algún momento ( Ctrl+ C, desconectando la alimentación, ...). Su programa debe producir resultados como una secuencia, de modo que después de una espera "razonable", haya producido algunas líneas. Básicamente, no está permitido construir una cadena gigante en la memoria solo para imprimirla al final. Cualquier programa que se quede sin memoria en una PC "estándar" queda descalificado. (No obstante, si su programa se dejó ejecutar durante el tiempo suficiente, debe imprimir todas las direcciones IPv6 y luego salir).
(Si esta condición es un problema para los intérpretes web que ejecutan el programa hasta su finalización y luego le permiten ver el resultado, y no tiene un intérprete alojado, pruebe su programa en una versión más pequeña del problema y luego ajústelo cuidadosamente al completo 2 128. )
Su puntaje es la longitud de su programa en bytes, multiplicado por 0.8 si obtiene el bono. Es el código de golf, por lo que gana el puntaje más bajo.