summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--day13/data.js5
-rw-r--r--day13/day13-1.js10
-rw-r--r--day13/day13-2.js22
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)
+