Description
While snooping around the local network of EBHQ, you compile a list of IP addresses (they're IPv7, of course; IPv6 is much too limited). You'd like to figure out which IPs support TLS (transport-layer snooping).
An IP supports TLS if it has an Autonomous Bridge Bypass Annotation, or ABBA. An ABBA is any four-character sequence which consists of a pair of two different characters followed by the reverse of that pair, such as xyyx
or abba
. However, the IP also must not have an ABBA within any hypernet sequences, which are contained by square brackets.
For example:
abba[mnop]qrst
supports TLS (abba
outside square brackets).abcd[bddb]xyyx
does not support TLS (bddb
is within square brackets, even thoughxyyx
is outside square brackets).aaaa[qwer]tyui
does not support TLS (aaaa
is invalid; the interior characters must be different).ioxxoj[asdfgh]zxcvbn
supports TLS (oxxo
is outside square brackets, even though it's within a larger string).
How many IPs in your puzzle input support TLS?
--- Part Two ---
You would also like to know which IPs support SSL (super-secret listening).
An IP supports SSL if it has an Area-Broadcast Accessor, or ABA, anywhere in the supernet sequences (outside any square bracketed sections), and a corresponding Byte Allocation Block, or BAB, anywhere in the hypernet sequences. An ABA is any three-character sequence which consists of the same character twice with a different character between them, such as xyx
or aba
. A corresponding BAB is the same characters but in reversed positions: yxy
and bab
, respectively.
For example:
aba[bab]xyz
supports SSL (aba
outside square brackets with correspondingbab
within square brackets).xyx[xyx]xyx
does not support SSL (xyx
, but no correspondingyxy
).aaa[kek]eke
supports SSL (eke
in supernet with correspondingkek
in hypernet; theaaa
sequence is not related, because the interior character must be different).zazbz[bzb]cdb
supports SSL (zaz
has no correspondingaza
, butzbz
has a correspondingbzb
, even thoughzaz
andzbz
overlap).
How many IPs in your puzzle input support SSL?
Notes
- 7-1 is very similar to 3-1 in that it's asking to check if something is a valid object, and then count up the occurrences. I just need to parse strings again.
- Sample data works fine, real data borks. On further inspections...real data has MULTIPLE BRACE SECTIONS per string, uggghhhh
- Trying to regex? FAIL. Trying to split? SUCCESS!
- 7-2 looks like it's going to be more of the same, but need to keep more detailed tracking of character codes.
- Not sure how to go forward on this one, so skipping it for now...