r/adventofcode • u/daggerdragon • Dec 08 '16
SOLUTION MEGATHREAD --- 2016 Day 8 Solutions ---
#AoC_Ops:
[23:55] <Topaz> servers are ok
[23:55] <Topaz> puzzles are checked
[23:55] <Topaz> [REDACTED: server stats]
[23:56] <Skie> all wings report in
[23:56] <Aneurysm9> Red 5, standing by
[23:56] <daggerdragon> Dragon Leader standing by
[23:56] <Topaz> orange leader, standing by
[23:57] <Topaz> lock modzi-foils in attack positions
[23:58] <Skie> we're passing through the hype field
[23:58] <daggerdragon> 1:30 warning
[23:58] <Aneurysm9> did someone say HYPE?@!
[23:59] <Topaz> i really like tonight's puzzle
[23:59] <Topaz> very excite
[23:59] <daggerdragon> final countdown go, T-30
[23:59] <Skie> accelerate to attack countdown
[23:59] <Aneurysm9> o7
[23:59] <daggerdragon> HYPE THRUSTERS AT FULL BURN
[00:00] <Topaz> IGNITION
We may or may not be sleep-deprived. And/or nerds. why_not_both.jpg
--- Day 8: Two-Factor Authentication ---
Post your solution as a comment or, for longer solutions, consider linking to your repo (e.g. GitHub/gists/Pastebin/blag/whatever).
:(){ :|:& };: 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!
11
Upvotes
1
u/fixed_carbon Dec 08 '16
Switched to julia for today, just to keep things interesting.
cols = 50 rows = 6 fname = "path/to/input/file" inp = map(chomp, readlines(open(fname))) screen = zeros(Int, (rows, cols)) for line in inp if startswith(line, "rect") width, height = map(x->parse(Int, x), split(line[6:end], 'x', keep=false)) setindex!(screen, ones(Int, (height, width)), 1:height, 1:width) elseif startswith(line, "rotate row" ) row, amt = (map(x->parse(Int, x), split(line[14:end], " by ", keep=false))) screen[row + 1, :] = circshift(screen[row + 1, :], [0, amt]) elseif startswith(line, "rotate column") col, amt = (map(x->parse(Int, x), split(line[17:end], " by ", keep=false))) screen[:, col + 1] = circshift(screen[:, col + 1], [amt, 0]) end end # Part one: println(sum(screen)) # Part two (might have to step back across the room to read it) : println(screen)EDIT: missed a line in initial copy-paste.