Added day 15
This commit is contained in:
parent
3562208a14
commit
e697150e0b
6
day15/input.txt
Normal file
6
day15/input.txt
Normal file
@ -0,0 +1,6 @@
|
||||
Disc #1 has 17 positions; at time=0, it is at position 15.
|
||||
Disc #2 has 3 positions; at time=0, it is at position 2.
|
||||
Disc #3 has 19 positions; at time=0, it is at position 4.
|
||||
Disc #4 has 13 positions; at time=0, it is at position 2.
|
||||
Disc #5 has 7 positions; at time=0, it is at position 2.
|
||||
Disc #6 has 5 positions; at time=0, it is at position 0.
|
7
day15/input_2.txt
Normal file
7
day15/input_2.txt
Normal file
@ -0,0 +1,7 @@
|
||||
Disc #1 has 17 positions; at time=0, it is at position 15.
|
||||
Disc #2 has 3 positions; at time=0, it is at position 2.
|
||||
Disc #3 has 19 positions; at time=0, it is at position 4.
|
||||
Disc #4 has 13 positions; at time=0, it is at position 2.
|
||||
Disc #5 has 7 positions; at time=0, it is at position 2.
|
||||
Disc #6 has 5 positions; at time=0, it is at position 0.
|
||||
Disc #7 has 11 positions; at time=0, it is at position 0.
|
22
day15/part1.js
Normal file
22
day15/part1.js
Normal file
@ -0,0 +1,22 @@
|
||||
var input = require("fs").readFileSync("input.txt").toString().replace(/\r/g, "");
|
||||
var cogs = input.split("\n").filter((a)=>(a)).map((line)=>{
|
||||
var lineParts = line.match(/Disc #([1-9]+) has ([1-9]+) positions; at time=0, it is at position ([0-9]+)./);
|
||||
return {
|
||||
number: parseInt(lineParts[1]),
|
||||
positions: parseInt(lineParts[2]),
|
||||
startPos: parseInt(lineParts[3]),
|
||||
};
|
||||
}).sort((a, b)=>(a.number - b.number));
|
||||
|
||||
var t = -1;
|
||||
var solved = false;
|
||||
while(!solved){
|
||||
solved = true;
|
||||
t++;
|
||||
for(var cog of cogs){
|
||||
if(((cog.number + cog.startPos + t) % cog.positions) != 0){
|
||||
solved = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
console.log(t);
|
22
day15/part2.js
Normal file
22
day15/part2.js
Normal file
@ -0,0 +1,22 @@
|
||||
var input = require("fs").readFileSync("input_2.txt").toString().replace(/\r/g, "");
|
||||
var cogs = input.split("\n").filter((a)=>(a)).map((line)=>{
|
||||
var lineParts = line.match(/Disc #([1-9]+) has ([1-9]+) positions; at time=0, it is at position ([0-9]+)./);
|
||||
return {
|
||||
number: parseInt(lineParts[1]),
|
||||
positions: parseInt(lineParts[2]),
|
||||
startPos: parseInt(lineParts[3]),
|
||||
};
|
||||
}).sort((a, b)=>(a.number - b.number));
|
||||
|
||||
var t = -1;
|
||||
var solved = false;
|
||||
while(!solved){
|
||||
solved = true;
|
||||
t++;
|
||||
for(var cog of cogs){
|
||||
if(((cog.number + cog.startPos + t) % cog.positions) != 0){
|
||||
solved = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
console.log(t);
|
Loading…
Reference in New Issue
Block a user