From a1cb1a1b16b2304ee2c688e289395c65e4d7a657 Mon Sep 17 00:00:00 2001 From: Piotr Russ Date: Sun, 13 Dec 2020 12:27:49 +0100 Subject: day13 --- day13/data.js | 5 +++++ day13/day13-1.js | 10 ++++++++++ day13/day13-2.js | 22 ++++++++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 day13/data.js create mode 100644 day13/day13-1.js create mode 100644 day13/day13-2.js (limited to 'day13') diff --git a/day13/data.js b/day13/data.js new file mode 100644 index 0000000..84e41b5 --- /dev/null +++ b/day13/data.js @@ -0,0 +1,5 @@ +const data = ` +1003055 +37,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,41,x,x,x,x,x,x,x,x,x,433,x,x,x,x,x,x,x,23,x,x,x,x,x,x,x,x,17,x,19,x,x,x,x,x,x,x,x,x,29,x,593,x,x,x,x,x,x,x,x,x,x,x,x,13 +` +module.exports = data diff --git a/day13/day13-1.js b/day13/day13-1.js new file mode 100644 index 0000000..16458cd --- /dev/null +++ b/day13/day13-1.js @@ -0,0 +1,10 @@ +const data = require('./data') +const dataLines = data.split(/\n/g).filter(d => d) +const currentTime = parseInt(dataLines[0]) +const busses = dataLines[1].split(',').filter(d => d !== 'x').map(d => parseInt(d)) +const timetable = busses + .map(b => ({'bus': b, 'time': b - currentTime % b})) + .sort((a,b) => a.time - b.time) + +console.log('Answer: ', timetable[0].bus * timetable[0].time) + diff --git a/day13/day13-2.js b/day13/day13-2.js new file mode 100644 index 0000000..0e6d11c --- /dev/null +++ b/day13/day13-2.js @@ -0,0 +1,22 @@ +const data = require('./data') +const [first, ...busses] = data + .split('\n') + .filter(d => d !== '')[1] + .split(',') + .map(d => d === 'x' ? null : parseInt(d)) + +let interval = first, t = 0 +busses.forEach((b, i) => { + if (b) { + while(true){ + if ((t+i+1) % b === 0) { + interval *= b + break + } + t += interval + } + } +}) + +console.log('Answer: ', t) + -- cgit v1.2.3