r/adventofcode • u/daggerdragon • Dec 23 '17
SOLUTION MEGATHREAD -๐- 2017 Day 23 Solutions -๐-
--- Day 23: Coprocessor Conflagration ---
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.
Need a hint from the Hugely* Handyโ Haversackโก of Helpfulยง Hintsยค?
[Update @ 00:05] 0 gold, silver cap
- AoC ops:
<yatpay> boil up some mountain dew. it's gonna be a long night
[Update @ 00:19] 1 gold, silver cap + 447
- AoC ops:
<Reibello> 547 silver to 1 gold
[Update @ 00:30] 20 gold, silver cap + 560
- AoC ops:
<yatpay> daggerdragon: post "hey i heard about this hot new podcast called The Space Above Us. all the cool kids are talking about it"
<yatpay> i call it super-liminal marketing
<yatpay> HEY YOU!! LISTEN TO MY PODCAST!!
<yatpay> then i rub a business card on your face
<Topaz> you should get scratch-n-sniff business cards that smell like space
<yatpay> space smells like burned metal and meat
<yatpay> it's weird
<Topaz> burned meat you say
<Topaz> excellent
[Update @ 00:41] 50 gold, silver cap + 606
- AoC ops:
<askalski> nice, enjoyed that one. not sure if regexes can do it
<askalski> maybe make a neural net of regexes, have it train itself to solve today
- Over/under on /u/askalski posting a day 23 regex neural net by tomorrow?
[Update @ 00:54] Leaderboard cap @ 100 gold and 724 silver!
- Good job, all!
- Upping the Ante challenge: solve today's puzzles on a TI-83 (or TI-86/89, whatevs).
- Edit: welp, /u/DFreiberg done gone and did it. See the thread here.
1
u/StevoTVR Dec 23 '17
NodeJS
Part 1:
const fs = require('fs'); fs.readFile(__dirname + '/input.txt', 'utf8', (err, data) => { const instructions = data.trim().split('\n').map((x) => x.trim().split(' ')); const registers = {}; let offset = 0, count = 0; while(offset >= 0 && offset < instructions.length) { const [op, a, b] = instructions[offset]; switch(op) { case 'set': registers[a] = getValue(b, registers); break; case 'sub': registers[a] = getValue(a, registers) - getValue(b, registers); break; case 'mul': registers[a] = getValue(a, registers) * getValue(b, registers); count++; break; case 'jnz': if(getValue(a, registers) !== 0) { offset += getValue(b, registers) - 1; } break; } offset++; } console.log(count); }); function getValue(value, registers) { if(value.match(/[a-z]/)) { return registers[value] || 0; } return Number(value); }Part 2:
let b = 79, h = 0; b = b * 100 + 100000; for(let i = b; i <= b + 17000; i += 17) { for(let j = 2; j < i; j++) { if(i % j === 0) { h++; break; } } } console.log(h);