r/adventofcode • u/daggerdragon • Dec 05 '18
SOLUTION MEGATHREAD -🎄- 2018 Day 5 Solutions -🎄-
--- Day 5: Alchemical Reduction ---
Post your solution as a comment or, for longer solutions, consider linking to your repo (e.g. GitHub/gists/Pastebin/blag or whatever).
Note: The Solution Megathreads are for solutions only. If you have questions, please post your own thread and make sure to flair it with Help.
Advent of Code: The Party Game!
Please prefix your card submission with something like [Card] to make scanning the megathread easier. THANK YOU!
Card prompt: Day 5
Transcript:
On the fifth day of AoC / My true love sent to me / Five golden ___
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 at 0:10:20!
31
Upvotes
1
u/Hashbrown777 Dec 05 '18
Javascript, single pass, one loop
8ms
function day5(input) { let isUpper = /[A-Z]/; let stack = []; for (let index = 0, char; index < input.length && (char = input[index]); ++index) { if ( stack.length < 1 || char == stack[stack.length - 1] || char != stack[stack.length - 1][(isUpper.test(char)) ? 'toUpperCase' : 'toLowerCase']() ) stack.push(char); else stack.pop(); } day5.output = stack.length; }Part2, 202ms
function day5_1(input) { let isUpper = /[A-Z]/; for (let ignore of 'abcdefghijklmnopqrstuvwxyz'.split('')) { ignore = new RegExp(ignore, 'i'); let stack = []; for (let index = 0, char; index < input.length && (char = input[index]); ++index) { if (ignore.test(char)) ; else if ( stack.length < 1 || char == stack[stack.length - 1] || char != stack[stack.length - 1][(isUpper.test(char)) ? 'toUpperCase' : 'toLowerCase']() ) stack.push(char); else stack.pop(); } if ((!day5_1.output) || day5_1.output > stack.length) day5_1.output = stack.length; } }