I just cut & paste the IPv6 I found in a Wikipedia. But that does touch on a good point... the formatting for how to express an IPv6 number is more complicated. The fact that 2001:0db8:0000:0000:0000:ff00:0042:8329 can be shorted to 2001:db8::ff00:42:8329 is less simpler to figure out than the good ol' <8bits>.<8bits>.<8bits>.<8bits> IPv4 format (at least that is true for me).
It's not that complicated. You can add leading zeros into each field, but that's similar to how 192.168.0.1 can be written as 192.168.000.001 (but if you do that in v4, it turns the field into octal! At least in v6 it's just a superfluous 0.). The only real complication is ::, which just means "insert zeros here".
(192.168.0.1 can also be written as 192.168.1, 192.11010049 or 3232235521. Or 192.0xa80001. Or 0xc0.0xa80001. Or 0300.168.1. Or a good number of other ways. That's far worse than anything you can do to a v6 address.)
irb(main):001:0> require 'ipaddr'
=> true
IPAddr.new("000.000.000.000").ipv4?
IPAddr::InvalidAddressError (zero-filled number in IPv4 address is ambiguous: 000.000.000.000)