Parse and expand an IPv6 address
Company: Liftoff
Role: Software Engineer
Category: Coding & Algorithms
Difficulty: medium
Interview Round: Onsite
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 consecutive `0000` hextets (zero-compression)
Task:
1. If `s` is 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 `:`.
2. 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`.
Quick Answer: 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.
Validate an IPv6 address and return exactly 8 lowercase zero-padded hextets, or Invalid.
Constraints
- Inputs are Python literals matching the function signature.
- Return a deterministic exact-match value.
Examples
Input: ('2001:db8::1',)
Expected Output: '2001:0db8:0000:0000:0000:0000:0000:0001'
Explanation: Compressed example.
Input: ('::',)
Expected Output: '0000:0000:0000:0000:0000:0000:0000:0000'
Explanation: All zeros.
Hints
- Model object-style prompts as operation streams when needed.
- Handle empty and boundary cases before the main logic.