为纪念世界IPv6日的周年纪念日,互联网协会在2014年6月6日发布了一项“关闭IPv4的活动”,为期一天。
IPv6地址可以长格式表示为八个冒号分隔的16位十六进制值。根据地址的不同,它们也可以按照RFC 3513的2.2节的文本文本表示中的第 2项进行缩短:
为了使写入包含零位的地址更容易,可以使用特殊语法来压缩零。“ ::”的使用表示一组或多组16位零。“ ::”在一个地址中只能出现一次。“ ::”还可以用于压缩地址中的前零或后零。
填入这个挑战将是接受无论是在或长或短格式格式化只有一个IPv6地址的程序,并显示在同一个地址都在长,短格式,按照这个顺序。
输入可能来自命令行参数STDIN或任何其他适合您选择语言的输入源。
禁止专门用于解析IPv6地址的库或实用程序(例如inet_ {ntop,pton}())。
如果输入地址无效,则输出将为空(或给出一些指示该地址无效的适当错误消息)
在
::
发生缩短的情况下,给定地址只能进行一次缩短操作。如果给定地址有多个潜在的缩短操作,则必须使用给出最短总地址的操作。如果在这方面有平局,将使用第一个操作。在下面的示例中对此进行了说明。
例子:
Input Output
1080:0:0:0:8:800:200C:417A 1080:0:0:0:8:800:200C:417A
1080::8:800:200C:417A
FF01::101 FF01:0:0:0:0:0:0:101
FF01::101
0:0:0:0:0:0:0:1 0:0:0:0:0:0:0:1
::1
:: 0:0:0:0:0:0:0:0
::
1:0:0:2:0:0:0:3 1:0:0:2:0:0:0:3
1:0:0:2::3
1:0:0:8:8:0:0:3 1:0:0:8:8:0:0:3
1::8:8:0:0:3
1:2:3:4:5:6:7:8 1:2:3:4:5:6:7:8
1:2:3:4:5:6:7:8
ABCD:1234 <Invalid address format - no output>
ABCDE::1234 <Invalid address format - no output>
1:2:3:4:5:6:7:8:9 <Invalid address format - no output>
:::1 <Invalid address format - no output>
codegolf puzzle <Invalid address format - no output>
这是codegolf,因此将接受2014年6月6日以字节为单位的最短答案。
1::2:0:0:0:3
一个可能的输入?
1:0:0:2:2::3
。缩短后的输出等于或等于1::2:2:0:0:3
吗?对于非最佳缩短的输入相同。