Mooie dingen
This commit is contained in:
@@ -9,6 +9,6 @@
|
||||
"typescript": "^4.9.3"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "nodemon src/2022/day10/index.ts"
|
||||
"start": "nodemon src/2022/day12/index.ts"
|
||||
}
|
||||
}
|
||||
|
||||
27
src/2022/day11/example.txt
Normal file
27
src/2022/day11/example.txt
Normal file
@@ -0,0 +1,27 @@
|
||||
Monkey 0:
|
||||
Starting items: 79, 98
|
||||
Operation: new = old * 19
|
||||
Test: divisible by 23
|
||||
If true: throw to monkey 2
|
||||
If false: throw to monkey 3
|
||||
|
||||
Monkey 1:
|
||||
Starting items: 54, 65, 75, 74
|
||||
Operation: new = old + 6
|
||||
Test: divisible by 19
|
||||
If true: throw to monkey 2
|
||||
If false: throw to monkey 0
|
||||
|
||||
Monkey 2:
|
||||
Starting items: 79, 60, 97
|
||||
Operation: new = old * old
|
||||
Test: divisible by 13
|
||||
If true: throw to monkey 1
|
||||
If false: throw to monkey 3
|
||||
|
||||
Monkey 3:
|
||||
Starting items: 74
|
||||
Operation: new = old + 3
|
||||
Test: divisible by 17
|
||||
If true: throw to monkey 0
|
||||
If false: throw to monkey 1
|
||||
108
src/2022/day11/index.ts
Normal file
108
src/2022/day11/index.ts
Normal file
@@ -0,0 +1,108 @@
|
||||
import path from 'path';
|
||||
import { readFile, sum } from "../../utils";
|
||||
|
||||
let input = readFile(path.resolve(__dirname, 'input.txt'));
|
||||
|
||||
let monkeys: any[] = []
|
||||
|
||||
input.split("\n\n").forEach((line, idx) => {
|
||||
const data = line.split("\n");
|
||||
|
||||
const starting = data[1].split(":")[1].split(",").map(meow => meow.split(" ").join("")).map(Number);
|
||||
const [arg1, op, arg2] = data[2].split(":")[1].split(" ").filter(a => a !== "=" && a !== "" && a !== "new");
|
||||
const DivBy = Number(data[3].split("Test: divisible by ")[1]);
|
||||
const toTrue = Number(data[4].split("If true: throw to monkey ")[1]);
|
||||
const toFalse = Number(data[5].split("If false: throw to monkey ")[1]);
|
||||
|
||||
monkeys.push({
|
||||
starting,
|
||||
operation: { arg1, op, arg2 },
|
||||
DivBy,
|
||||
toTrue,
|
||||
toFalse,
|
||||
inspected: 0
|
||||
})
|
||||
});
|
||||
|
||||
let rounds = 20;
|
||||
|
||||
for (let round = 0; round < rounds; round++) {
|
||||
monkeys.forEach(monkey => {
|
||||
while(monkey.starting.length > 0){
|
||||
const item = monkey.starting.shift();
|
||||
monkey.inspected++;
|
||||
const arg1 = monkey.operation.arg1 === "old" ? item : Number(monkey.operation.arg1);
|
||||
const arg2 = monkey.operation.arg2 === "old" ? item : Number(monkey.operation.arg2);
|
||||
var newVal = 0;
|
||||
|
||||
if (monkey.operation.op === "*") {
|
||||
newVal = arg1 * arg2;
|
||||
}
|
||||
else if (monkey.operation.op === "+") {
|
||||
newVal = arg1 + arg2;
|
||||
}
|
||||
|
||||
newVal = Math.floor(newVal / 3);
|
||||
|
||||
if (!(newVal % monkey.DivBy)) {
|
||||
monkeys[monkey.toTrue].starting.push(newVal);
|
||||
} else {
|
||||
monkeys[monkey.toFalse].starting.push(newVal);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const monkeyz = monkeys.map(moneky => moneky.inspected).sort((a,b) => b - a);
|
||||
console.log("Part1:", monkeyz[0] * monkeyz[1]);
|
||||
|
||||
|
||||
monkeys = []
|
||||
|
||||
input.split("\n\n").forEach((line, idx) => {
|
||||
const data = line.split("\n");
|
||||
|
||||
const starting = data[1].split(":")[1].split(",").map(meow => meow.split(" ").join("")).map(Number);
|
||||
const [arg1, op, arg2] = data[2].split(":")[1].split(" ").filter(a => a !== "=" && a !== "" && a !== "new");
|
||||
const DivBy = Number(data[3].split("Test: divisible by ")[1]);
|
||||
const toTrue = Number(data[4].split("If true: throw to monkey ")[1]);
|
||||
const toFalse = Number(data[5].split("If false: throw to monkey ")[1]);
|
||||
|
||||
monkeys.push({
|
||||
starting,
|
||||
operation: { arg1, op, arg2 },
|
||||
DivBy,
|
||||
toTrue,
|
||||
toFalse,
|
||||
inspected: 0
|
||||
})
|
||||
});
|
||||
|
||||
rounds = 1000;
|
||||
|
||||
for (let round = 0; round < rounds; round++) {
|
||||
monkeys.forEach(monkey => {
|
||||
while(monkey.starting.length > 0){
|
||||
const item = monkey.starting.shift();
|
||||
monkey.inspected++;
|
||||
const arg1 = monkey.operation.arg1 === "old" ? item : Number(monkey.operation.arg1);
|
||||
const arg2 = monkey.operation.arg2 === "old" ? item : Number(monkey.operation.arg2);
|
||||
var newVal = 0;
|
||||
|
||||
if (monkey.operation.op === "*") {
|
||||
newVal = arg1 * arg2;
|
||||
}
|
||||
else if (monkey.operation.op === "+") {
|
||||
newVal = arg1 + arg2;
|
||||
}
|
||||
|
||||
let remainder = newVal / monkey.DivBy;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
const monkeyz2 = monkeys.map(moneky => moneky.inspected).sort((a,b) => b - a);
|
||||
console.log("Part1:", monkeyz2[0] * monkeyz2[1]);
|
||||
|
||||
55
src/2022/day11/input.txt
Normal file
55
src/2022/day11/input.txt
Normal file
@@ -0,0 +1,55 @@
|
||||
Monkey 0:
|
||||
Starting items: 89, 74
|
||||
Operation: new = old * 5
|
||||
Test: divisible by 17
|
||||
If true: throw to monkey 4
|
||||
If false: throw to monkey 7
|
||||
|
||||
Monkey 1:
|
||||
Starting items: 75, 69, 87, 57, 84, 90, 66, 50
|
||||
Operation: new = old + 3
|
||||
Test: divisible by 7
|
||||
If true: throw to monkey 3
|
||||
If false: throw to monkey 2
|
||||
|
||||
Monkey 2:
|
||||
Starting items: 55
|
||||
Operation: new = old + 7
|
||||
Test: divisible by 13
|
||||
If true: throw to monkey 0
|
||||
If false: throw to monkey 7
|
||||
|
||||
Monkey 3:
|
||||
Starting items: 69, 82, 69, 56, 68
|
||||
Operation: new = old + 5
|
||||
Test: divisible by 2
|
||||
If true: throw to monkey 0
|
||||
If false: throw to monkey 2
|
||||
|
||||
Monkey 4:
|
||||
Starting items: 72, 97, 50
|
||||
Operation: new = old + 2
|
||||
Test: divisible by 19
|
||||
If true: throw to monkey 6
|
||||
If false: throw to monkey 5
|
||||
|
||||
Monkey 5:
|
||||
Starting items: 90, 84, 56, 92, 91, 91
|
||||
Operation: new = old * 19
|
||||
Test: divisible by 3
|
||||
If true: throw to monkey 6
|
||||
If false: throw to monkey 1
|
||||
|
||||
Monkey 6:
|
||||
Starting items: 63, 93, 55, 53
|
||||
Operation: new = old * old
|
||||
Test: divisible by 5
|
||||
If true: throw to monkey 3
|
||||
If false: throw to monkey 1
|
||||
|
||||
Monkey 7:
|
||||
Starting items: 50, 61, 52, 58, 86, 68, 97
|
||||
Operation: new = old + 4
|
||||
Test: divisible by 11
|
||||
If true: throw to monkey 5
|
||||
If false: throw to monkey 4
|
||||
5
src/2022/day12/example.txt
Normal file
5
src/2022/day12/example.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
Sabqponm
|
||||
abcryxxl
|
||||
accszExk
|
||||
acctuvwj
|
||||
abdefghi
|
||||
5
src/2022/day12/index.ts
Normal file
5
src/2022/day12/index.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
import path from 'path';
|
||||
import { readFile, sum } from "../../utils";
|
||||
|
||||
let input = readFile(path.resolve(__dirname, 'input.txt'));
|
||||
|
||||
41
src/2022/day12/input.txt
Normal file
41
src/2022/day12/input.txt
Normal file
@@ -0,0 +1,41 @@
|
||||
abccccaaaaaaaaaaaaaccaaaaaaaacccccccccaaaaaaaaccccccccaaacaaacccccccaaaaaaccccccccccccccccccccccaaaacccccccccccacccccccccccccccccccccccccccccccccccccccccccccccaaaa
|
||||
abccccaaaaacaaaaaaccccaaaaaaccccccccccaaaaaaacccccccccaaaaaaacccccaaaaaaaaaacccccccccccccccccccaaaaaacccccccccaaaaaaaaccccccccccccccccccccccccccccccccccccccccaaaaa
|
||||
abcccaaaaaccaaaaaaccccaaaaaaccccccaacccaaaaaacccccccccaaaaaacccaaaaaaaaaaaaaaacaaccacccccccccccaaaaaaccccccccccaaaaaacccccccccccccccccccccccccccccccccccccccccaaaaa
|
||||
abccccccaaccaaaaaaccaaaaaaaaccccccaaacaaaacaaacccccccaaaaaaaaccaaaaaaaaaaaaaaacaaaaacccccccccccccaaccccccccccccaaaaaaccccccccccccccccccccccccccccacccccccccccaaaaaa
|
||||
abccccccccccaaccaaccaaaaccaacccccccaaaaaaaccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacccccccaaaaccccccccccccccccaaaaaaaacccccccccccccccccccccccccccaaccccccccccccccaa
|
||||
abcccccccaaaaacccaaaaaaaacccaaccccaaaaaaccccccccccccaaaaaaaaaaaaaaaacaaaaaaaccaaaaaaccccccaaaaaccccccccccccccaaaaaaaaaaccaccccccccccccccccccccccccaccccccccccccccca
|
||||
abcccccccaaaaacccaaaaaaaaccaaaaccaaaaaaaaccccccccccccccaaacaaaaaaaaacaaaaaacccccaaaacccccaaaaaaccccccccccccccaaaaaaaaaaaaacccccccccccccccllllllccccdccccccccccccccc
|
||||
abccccccaaaaaacccccaaaaccccaaaaacaaaaaaaaccccccccccccccaaacccccaaaccccaaaaaacccaaccccccccaaaaaacccccccccccccccccaaaaaaaaaacccccccccccccklllllllllcddddccaccaaaccccc
|
||||
abccccccaaaaaacccccaaaaaaaaaaaaaaaccaaccccccaacaacccccccaaccccccccccccaaacaacccccccccccccaaaaaacccccccccccccccccaaaaaaaaaacccccccccccckklllppllllcddddddddaaaaccccc
|
||||
abccccccaaaaaaccccaaacaaaaaaaaaaaaccaaccccccaaaaaccccccccccccccccccccccccccccccccccccccccccaaccccccaaccccccccccccaacaaaaaaaccccccccccckklpppppplllmdddddddddacccccc
|
||||
abccccccccaaacccccaacccaccaaaaaaccccccccccccaaaaaaccccccccccccccccccccccccccccccccccccccccccccccccaaaaccccccccccccaaaaaaaaaaccccccccckkkkppppppplmmmmmmddddddaacccc
|
||||
abccccaaacaaacccccccccccccaaaaaaccccccccccccaaaaaacccccccccccccccccaaaccccccccccccccccccccccccccccaaaaccccccccccccaaaaaaaaaaccccccccckkkppppuppppmmmmmmmmddeeeacccc
|
||||
abccccaaaaaaacccccccccccccaaaaaacccaccccccccaaaaaacccccccccccccccccaaaacccccccccccccccccccccaaacccaaaacccccccccccaaaacaaaccccccccccckkkpppuuuuuppqqmmmmmmmmeeeacccc
|
||||
abcccccaaaaaaccccccccccccaaaaaaaacaaccccccccccaaaccccccccccccccccccaaaaccccccccccccccccccccaaaaccccccccccccccccccaaaaaaaacccccccccckkkkpppuuuuupqqqqqqqmmmmeeeccccc
|
||||
abcccccaaaaaaaacccccccccccaccccaaaaacccccccccccccccccccccccccccccccaaaccccccccccccccaaaccccaaaacccccccccccccaaccaaaaaaaaccccccccckkkkkrrpuuuxuuuqqqqqqqqmmmmeeccccc
|
||||
abccccaaaaaaaaaccccccccccccccaaaaaacccccccacaacccccccccccccccccccccccccccccccccccccaaaaaacccaaaccccccccccaaaaccaaaaaaacccccccccckkkkrrrrruuuxxuvvvvvvqqqqnnneeccccc
|
||||
abcccaaaaaaaaaaccccccccccccccaaaaaaaacccccaaaaacccccccccccccccaaaaaccccccccccccccccaaaaaaccccccccccccccccaaaaaaaaaaaaacccccccccjjjkrrrrruuuxxxxvvvvvvvqqqnnneeccccc
|
||||
abcaaaaacaaacccccccccccccccccaaaaaaaacccccaaaaaccaacccccccccccaaaaaccccccccccccccccaaaaaccccccccccccccccccaaaaaccaaaaaacccccccjjjrrrrruuuuuxxxyvyyyvvvqqqnneeeccccc
|
||||
abcaaaaacaaaccaaccccccccccccccccaacccccccaaaaaaaaaaaccccccccccaaaaaaccccccccccccccccaaaaaccccccccccccccccaaaaacccaaaaaaaacaaacjjjrrrtttuuxxxxxyyyyyvvvqqnnneeeccccc
|
||||
abaaaaaccaacccaaaccaacccaaccccccaccccccccaaaaaaaaaacccccccccccaaaaaaccccccccccccccccaacaacccccccccccccccccccaacccaaccccaaaaaacjjjrrrtttxxxxxxxyyyyyvvvrrnnneeeccccc
|
||||
SbaaaaacccccccaaaaaaaccaaaacccccccccccccccaaaaaaaaacccccccccccaaaaaaccccccccccccccccccccccccccccccccccccccccccccccaacccaaaaaacjjjrrrtttxxxEzzzzyyyvvvrrnnneeecccccc
|
||||
abcaaaaacccccccaaaaaaccaaaacccccccccccccccaaaaaaaaacccccccccccccaaccccccccccccccccccccccccccccaaccccccccccaaccccacaaaacaaaaaaajjjrrrtttxxxxxyyyyyvvvrrrnnnfffcccccc
|
||||
abcaacccccccaaaaaaaacccaaaaccccccccccccccccaaaaaaaaaaccccccccccccccccccccccccccccccccccccccaaaaaccccccccccaaccccaaaaaaaaaaaaaajjjqqqttttxxxxyyyyyyvvrrrnnnfffcccccc
|
||||
abccccccccccaaaaaaaaaccccccccccccccccccccaaaaaaaaaaaaacccccccccccccccccaacccccccccccccccccccaaaaaccccccaacaaaaaccaaaacaaaaaaaacjjjqqqqttttxxyywyyyywvrrnnnfffcccccc
|
||||
abccccccccccaaaaaaaaaacccccccccccccccccccaaaaaaaaacaaacccccccccccccaaacaacccccccccccccccccccaaaaaccccccaaaaaaaaccaaaaccccaaacccjjjjqqqqtttxwywwwyywwwrrnnnfffcccccc
|
||||
abcccccccccccccaaaaaaacccccccccccccccccccaaaaaaaaaaaaaaaacccccccccccaaaaaccccccccccccccccccaaaaacccaaccccaaaaccccaacaacccaaaccccjjjiqqqtttwwywwwwwwwwrrroofffcccccc
|
||||
abcccccccccccccaaaccccccccccccccccccccccaaaaaaaaaaaaaaaaaccccccccccccaaaaaacccccccccccccccccccaaacaaaccccaaaaaccccccccccccccccccciiiiqqqttwwwwwswwwwrrrroofffcccccc
|
||||
abcccccccccccccaaccccccccccccaaaacccccccaaaaaaaaccaaaaacccccccccccccaaaaaaacccccccccccccccccccaaaaaaacccaaacaacccccaaaaacccccccccciiiqqqttwwwwsssssrrrrroofffaccccc
|
||||
abcccccccccccccccccccccccccccaaaaccccccccacaaacccaaaaaaccccccaaccccaaaaaaccccccccaacaaccccccccaaaaaaccccaaaacacccccaaaaacccccccccciiiqqqtsswsssssssrrrrooofffaccccc
|
||||
abcccccccccccccccccccccccccccaaaaccccccccccaaaccaaaaaaaccccccaaaaccaacaaaccccccccaaaaacccccccccaaaaaaaaccaaacacccccaaaaaacccccccccciiqqqssssssspposrrroooofffaccccc
|
||||
abccccaaacccccccccccccccccccccaaacccccccccccccccaaacaaaccccaaaaaacccccaaaccccccccaaaaaacccccccaaaaaaaaaaaaaaaaaccccaaaaaaccccccaccciiiqqpsssssppppooooooogffaaccccc
|
||||
abccccaaaaaacccaaaccccccccccccccccccccccccccccccccccccaccccaaaaacccccccccccccccccaaaaaaccccccaaaaaaaaaaaaaaaaaaccccaaaaaacccaaaaccciiiqqppppppppppoooooogggfaaacccc
|
||||
abcccaaaaaaacccaaaccccccccccccccccccccccccccccccccccccccccccaaaaaccccccccccccccccaaaaaaccccccaaacaaaccccaaaaaacccccccaacccccaaaaaacciiipppppppphgggggggggggaaaacccc
|
||||
abccaaaaaaaacccaaacaaacccccccccccccccccccccaacccccccccccccccaacaacccccaacccccccccccaaacccccccccccaaacccccaaaaacccccccccccccccaaaaacciiihppppphhhhgggggggggaaccccccc
|
||||
abccaaaaaaacaaaaaaaaaacccccccccccccccccccccaaaccccccacccccccccccccccccaaccccccccccccccccccccccccaaaaccccaaaaaaccccccccccccccaaaaacccciihhhhhhhhhhgggggggccaaccccccc
|
||||
abccccaaaaaaaaaaaaaaacccccccccccccccccccaaaaaaaaccccaaacaaaccccccccccaaaaccaaccccccccaacaacccccaaaaaaacccaacccccccccccccccccaacaaccccchhhhhhhhhaaaacccccccccccccccc
|
||||
abccccaaaaaacaaaaaaaccccccccccccccccccccaaaaaaaaccccaaaaaaaccccccccccaaaaaaaacaccccccaaaaaccccccaaaaacccccccccccccccccccccccccccccccccchhhhhhacaaaaaccccccccccccccc
|
||||
abccccaaccccccaaaaaacccccccccccccaaccccccaaaaaacccccaaaaaaccccccaaaaaaaaaaaaaaaccccccaaaaaacccaaaaaaacccccccccccccccccccccccccccccccccccccaaaaccaaacccccccccccaaaca
|
||||
abccccccccccccaaaaaaaccccccccccccaaccccccaaaaaacccaaaaaaaaccccccaaaaaaaaaaaaaacccccccaaaaaacccaaaaaaaaccccccaaacccccccccccccccccccccccccccaaaaccccccccccccccccaaaaa
|
||||
abccaaacccccccaaacaaacccccccccaaaaaaaacccaaaaaacccaaaaaaaaacccccaaaaaaaaaaaaaacccccccaaaaaccccaaaaaaaaccccccaaaaccccccccccccccccccccccccccaaaccccccccccccccccccaaaa
|
||||
abcaaaacccccccaaccccccccccccccaaaaaaaacccaaccaacccaaaaaaaaaaccccccccaaaaaaacaacccccccccaaaccccccaaacaaccccccaaaacccccccccccccccccccccccccccccccccccccccccccccaaaaaa
|
||||
@@ -1,17 +1,11 @@
|
||||
import path from 'path';
|
||||
import { readFile, sum } from "../../utils";
|
||||
|
||||
let input = readFile(path.resolve(__dirname, 'input.txt'));
|
||||
let input = readFile(path.resolve(__dirname, 'example.txt'));
|
||||
|
||||
let grid: any[] = [];
|
||||
|
||||
let right = 0;
|
||||
let up = 0;
|
||||
|
||||
let THistory: {x:number, y:number}[] = [];
|
||||
let THistory: { x: number, y: number }[] = [];
|
||||
|
||||
let pos = {
|
||||
|
||||
H: { x: 0, y: 0 },
|
||||
T: { x: 0, y: 0 }
|
||||
}
|
||||
@@ -20,12 +14,12 @@ input.split("\n").forEach(element => {
|
||||
const [dir, num] = element.split(" ");
|
||||
|
||||
for (let n = 0; n < num; n++) {
|
||||
const prevH = {x: pos.H.x, y: pos.H.y}
|
||||
const prevH = { x: pos.H.x, y: pos.H.y }
|
||||
switch (dir) {
|
||||
case "U":
|
||||
pos.H = { x: pos.H.x, y: pos.H.y + 1 };
|
||||
break;
|
||||
case "D":
|
||||
case "D":
|
||||
pos.H = { x: pos.H.x, y: pos.H.y - 1 };
|
||||
break;
|
||||
case "L":
|
||||
@@ -38,10 +32,39 @@ input.split("\n").forEach(element => {
|
||||
|
||||
const distX = Math.abs(pos.H.x - pos.T.x);
|
||||
const distY = Math.abs(pos.H.y - pos.T.y);
|
||||
if(distX > 1 || distY > 1) pos.T = {x: prevH.x, y: prevH.y};
|
||||
if (distX > 1 || distY > 1) pos.T = { x: prevH.x, y: prevH.y };
|
||||
|
||||
THistory.push(pos.T);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
console.log("Part 1:", new Set(THistory.map(pos => pos.x + "-" + pos.y)).size);
|
||||
console.log("Part 1:", new Set(THistory.map(pos => pos.x + "-" + pos.y)).size);
|
||||
|
||||
|
||||
let snek = Array(10).fill({ x: 0, y: 0 });
|
||||
|
||||
input.split("\n").forEach(element => {
|
||||
const [dir, num] = element.split(" ");
|
||||
|
||||
for (let n = 0; n < num; n++) {
|
||||
|
||||
switch (dir) {
|
||||
case "U":
|
||||
snek[0] = { x: snek[0].x, y: snek[0].y + 1 };
|
||||
break;
|
||||
case "D":
|
||||
snek[0] = { x: snek[0].x, y: snek[0].y - 1 };
|
||||
break;
|
||||
case "L":
|
||||
snek[0] = { x: snek[0].x - 1, y: snek[0].y };
|
||||
break;
|
||||
case "R":
|
||||
snek[0] = { x: snek[0].x + 1, y: snek[0].y };
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
console.log(snek);
|
||||
});
|
||||
Reference in New Issue
Block a user