diff options
-rw-r--r-- | day13/data.js | 5 | ||||
-rw-r--r-- | day13/day13-1.js | 10 | ||||
-rw-r--r-- | day13/day13-2.js | 22 |
3 files changed, 37 insertions, 0 deletions
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) + |