世界IPv6デーの記念日をマークするために、インターネット協会はOne Dayの2014年6月6日にIPv4を止めるキャンペーンを発表しました。
IPv6アドレスは、コロンで区切られた8つの16ビット16進値として長い形式で表されます。アドレスに応じて、RFC 3513のセクション2.2 アドレスのテキスト表現の項目2で説明されているように、短縮することもできます。
ゼロビットを含むアドレスの書き込みを容易にするために、ゼロを圧縮する特別な構文が利用可能です。「::」の使用は、16ビットのゼロの1つ以上のグループを示します。「::」は、アドレスに一度しか表示できません。「::」は、アドレスの先頭または末尾のゼロを圧縮するためにも使用できます。
このチャレンジのエントリは、長い形式または短い形式のいずれかでフォーマットされたIPv6アドレスを1つだけ受け入れ、長い形式と短い形式の両方で同じアドレスをこの順序で表示するプログラムです。
入力は、コマンドライン引数、STDIN、または選択した言語に適した他の入力ソースからのものです。
IPv6アドレスの解析専用のライブラリまたはユーティリティは禁止されています(inet_ {ntop、pton}()など)。
入力アドレスが無効な場合、出力は空になります(または、アドレスが無効であることを示す適切なエラーメッセージが表示されます)
::
短縮が発生する場合、特定のアドレスに対して1つの短縮操作のみが発生する場合があります。特定のアドレスに対して複数の潜在的な短縮操作がある場合、全体の最短アドレスを提供する操作を使用する必要があります。この点で同点がある場合は、最初の操作が使用されます。これを以下の例に示します。
例:
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
ですか?最適化されていない入力に対しても同じです。