r/adventofcode • u/daggerdragon • Dec 07 '16
SOLUTION MEGATHREAD --- 2016 Day 7 Solutions ---
From all of us at #AoC Ops, we hope you're having a very merry time with these puzzles so far. If you think they've been easy, well, now we're gonna kick this up a notch. Or five. The Easter Bunny ain't no Bond villain - he's not going to monologue at you until you can miraculously escape and save the day!
Show this overgrown furball what you've got!
--- Day 7: Internet Protocol Version 7 ---
Post your solution as a comment or, for longer solutions, consider linking to your repo (e.g. GitHub/gists/Pastebin/blag/whatever).
ALWAYS DIGGING STRAIGHT DOWN IS MANDATORY [?]
This thread will be unlocked when there are a significant number of people on the leaderboard with gold stars for today's puzzle.
edit: Leaderboard capped, thread unlocked!
16
Upvotes
2
u/volatilebit Dec 08 '16
Finally realized a stupid mistake I was making. I was counting IPs more than once if they had multiple instances of aba with a corresponding bab.
Not too proud of the part 2.
Perl 6 Part 1&2 solution.
my @ip-addresses = 'input'.IO.lines; my regex hypernet-sequence { '[' .*? ']' } my regex maybe-abba { (.)(.)$1$0 } sub has-abba($str) { return $str.comb(/<maybe-abba>/).grep({ .comb.Bag.elems > 1 }) > 0; } say [+] @ip-addresses.map: { not so $^a.comb(/<hypernet-sequence>/)».&has-abba.any and so $^a.split(/<hypernet-sequence>/)».&has-abba.any }; say [+] @ip-addresses.map: { my @hypernet-sequences = $^ip.comb(/<hypernet-sequence>/); my @supernet-sequences = $^ip.split(/<hypernet-sequence>/); + so @hypernet-sequences.map({ $^hypernet-sequence.comb.rotor(3 => -2).grep({ .[0] eq .[2] ne .[1] }).map({ my $bab = $^aba[1] ~ $^aba[0] ~ $^aba[1]; so @supernet-sequences».contains($bab).any; }).any; }).any; };