Coding questions · Liftoff
Parse and expand an IPv6 address
This question evaluates proficiency in IPv6 address parsing, string validation, and canonicalization, testing understanding of hexadecimal hextets and the zero-compression (::) rule within the Coding & Algorithms domain.
Implement an IPv6 address parser/normalizer.
You are given a string s that may represent an IPv6 address using standard notation:
- Up to 8 groups (“hextets”) separated by
: - Each hextet is 1 to 4 hex digits (
0-9,a-f,A-F) - A single
::may appear at most once, representing one or more consecutive0000hextets (zero-compression)
Task:
- If
sis a valid IPv6 address under the rules above, return its fully expanded canonical form: exactly 8 hextets, each as 4 lowercase hex digits, joined by:. - Otherwise return
"Invalid".
Examples:
"2001:db8::1"→"2001:0db8:0000:0000:0000:0000:0000:0001""::"→"0000:0000:0000:0000:0000:0000:0000:0000""1:2:3:4:5:6:7:8"→"0001:0002:0003:0004:0005:0006:0007:0008""1::2::3"→"Invalid"(multiple::)"1:2:3:4:5:6:7:8:9"→"Invalid"(too many hextets)
Constraints: |s| ≤ 100.
IPv6 Address Expander
Validate an IPv6 address and return exactly 8 lowercase zero-padded hextets, or Invalid.
Hints
- Model object-style prompts as operation streams when needed.
- Handle empty and boundary cases before the main logic.