Una dirección IPv6 es una secuencia de 8 grupos de 4 dígitos hexadecimales, separados por dos puntos (:), como las siguientes:
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
2001:0DB8:0000:CD30:0000:0000:0000:0000
2002:0000:0000:00AA:0000:0000:0A00:0001
0000:0000:0000:0000:0000:0000:FFFF:FFFF
0000:0000:0000:0000:0000:0000:0000:0000
En comparación con las antiguas direcciones IPv4, las direcciones IPv6 son tan largas que se han ideado las siguientes abreviaturas:
Dentro de un grupo de 4 dígitos, borrar los ceros de delante (dejando siempre, como mínimo, un dígito).
Una secuencia de 1 o más grupos de 4 ceros (0000)
puede reemplazarse por dos caracteres dos puntos (::). Este reemplazo
solo puede hacerse una vez en toda la dirección.
Por ejemplo, si aplicáramos la primera abreviatura las direcciones anteriores quedarían:
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
2001:DB8:0:CD30:0:0:0:0
2002:0:0:AA:0:0:A00:1
0:0:0:0:0:0:FFFF:FFFF
0:0:0:0:0:0:0:0
Y si además aplicásemos la segunda abreviatura (en nuestro caso, reemplazando siempre el grupo de ceros más largo, y en caso de empate, el de más a la izquierda) obtendríamos:
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
2001:DB8:0:CD30::
2002::AA:0:0:A00:1
::FFFF:FFFF
::
En este problema te pedios que pases direcciones IPv6 de un formato (abreviado o sin abreviar) a otro.
Cada entrada contiene varios casos. La primera línea de la entrada
contiene una letra (C, 1 o 2)
según si se te pide escribir la dirección IPv6 en formato extendido
(C), aplicar la primera abreviatura (1), o las
dos primeras abreviaturas (2).
La segunda línea de la entrada contiene el número
de casos, no superior a 1000. Las
líneas restantes contienen direcciones IPv6 que tienes que transcribir.
Si se te pide 1 o 2, recibirás una dirección
IPv6 sin abreviar, que deberás abreviar siguiendo las reglas descritas
anteriormente. (Para la segunda abreviatura, abrevia siempre la mayor
cantidad de ceros posible y, en caso de haber varias, abrevia el grupo
de ceros más a la izquierda, como se hace en el tercer ejemplo).
Si se te pide C, recibirás una dirección IPv6 abreviada
(o parcialmente abreviada) que deberás escribir en formato extendido (8
grupos de 4 dígitos hexadecimales).
Para cada caso, escribe una única línea (acabada en salto de línea) con la dirección IPv6, abreviada o sin abreviar, según se te pida.
TestA:
Resolver varias entradas donde se te pide aplicar la primera
abreviatura (1), como el Ejemplo 1.
TestB:
Resolver varias entradas donde se te pide extender (C)
direcciones IPv6 que no han sido abreviadas según la segunda norma (es
decir, no contendrán ::), como el Ejemplo 2.
TestC:
Resolver varias entradas donde se te pide aplicar las dos primeras
abrevituras (2), como el Ejemplo 3.
TestD:
Resolver varias entradas donde se te pide extender (C)
direcciones IPv6 de cualquier tipo, como el Ejemplo 4.
Input
1 5 ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 2001:0DB8:0000:CD30:0000:0000:0000:0000 2002:0000:0000:00AA:0000:0000:0A00:0001 0000:0000:0000:0000:0000:0000:FFFF:FFFF 0000:0000:0000:0000:0000:0000:0000:0000
Output
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 2001:DB8:0:CD30:0:0:0:0 2002:0:0:AA:0:0:A00:1 0:0:0:0:0:0:FFFF:FFFF 0:0:0:0:0:0:0:0
Input
C 5 ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 2001:DB8:0:CD30:0:0:0:0 2002:0:0000:00AA:0:00:A00:01 0000:0:0:0:0:0:FFFF:FFFF 0:0:0:0:0:0:0:0
Output
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 2001:0DB8:0000:CD30:0000:0000:0000:0000 2002:0000:0000:00AA:0000:0000:0A00:0001 0000:0000:0000:0000:0000:0000:FFFF:FFFF 0000:0000:0000:0000:0000:0000:0000:0000
Input
2 5 ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 2001:0DB8:0000:CD30:0000:0000:0000:0000 2002:0000:0000:00AA:0000:0000:0A00:0001 0000:0000:0000:0000:0000:0000:FFFF:FFFF 0000:0000:0000:0000:0000:0000:0000:0000
Output
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 2001:DB8:0:CD30:: 2002::AA:0:0:A00:1 ::FFFF:FFFF ::
Input
C 6 ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 2001:DB8:0:CD30:: 2002:0:0:00AA:0:0:A00:01 0000:0::FFFF:FFFF 0:0::0:0 ::
Output
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 2001:0DB8:0000:CD30:0000:0000:0000:0000 2002:0000:0000:00AA:0000:0000:0A00:0001 0000:0000:0000:0000:0000:0000:FFFF:FFFF 0000:0000:0000:0000:0000:0000:0000:0000 0000:0000:0000:0000:0000:0000:0000:0000