Compare commits
14 Commits
041addf629
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 538259ffd4 | |||
| f640da25f8 | |||
| c0f0e9e754 | |||
| de91702dff | |||
| 4c960e4ab5 | |||
| e43eea0f6e | |||
| f214ed1fe3 | |||
| 6b2e5bbe2c | |||
| 57f3bd59e1 | |||
| d68ac87ca9 | |||
| 9574f3b126 | |||
| 6833bfb1e3 | |||
| b381d29871 | |||
| e7c428b678 |
20
.vscode/launch.json
vendored
Normal file
20
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"name": "Launch Program",
|
||||
"skipFiles": [
|
||||
"<node_internals>/**"
|
||||
],
|
||||
"program": "${workspaceFolder}/src/2022/day6/index.ts",
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/**/*.js"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"typescript.tsdk": "node_modules/typescript/lib"
|
||||
}
|
||||
1199
package-lock.json
generated
1199
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
14
package.json
14
package.json
@@ -1,10 +1,14 @@
|
||||
{
|
||||
"devDependencies": {
|
||||
"@types/node": "^16.11.11",
|
||||
"ts-node": "^10.4.0",
|
||||
"typescript": "^4.5.2"
|
||||
"@swc/core": "^1.3.21",
|
||||
"@swc/helpers": "^0.4.14",
|
||||
"@types/node": "^16.18.4",
|
||||
"nodemon": "^2.0.20",
|
||||
"regenerator-runtime": "^0.13.11",
|
||||
"ts-node": "^10.9.1",
|
||||
"typescript": "^4.9.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"node-fetch": "^3.1.0"
|
||||
"scripts": {
|
||||
"start": "nodemon src/2022/day12/index.ts"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import * as fs from 'fs';
|
||||
import path from 'path';
|
||||
import {readFile} from "../utils";
|
||||
import {readFile} from "../../utils";
|
||||
|
||||
let input = readFile(path.resolve(__dirname, 'input.txt'));
|
||||
|
||||
56
src/2021/day2/index.ts
Normal file
56
src/2021/day2/index.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
import path from 'path';
|
||||
import {readFile} from "../../utils";
|
||||
|
||||
let input = readFile(path.resolve(__dirname, 'example.txt')).map(x => x.split(' ')).map((cmd) => ({cmd: cmd[0], val: Number(cmd[1])}))
|
||||
|
||||
let forward = 0;
|
||||
let depth = 0;
|
||||
|
||||
type Entry = {
|
||||
cmd: string,
|
||||
val: number
|
||||
}
|
||||
|
||||
const add = (entry: Entry) => {
|
||||
if (entry.cmd === 'forward') forward += entry.val;
|
||||
else if (entry.cmd === 'down') depth += entry.val;
|
||||
else depth -= entry.val;
|
||||
}
|
||||
|
||||
input.map(add)
|
||||
|
||||
console.log("Part 1", forward * depth)
|
||||
|
||||
forward = 0;
|
||||
depth = 0;
|
||||
let aim = 0;
|
||||
|
||||
const execute = (entry: Entry) => {
|
||||
if (entry.cmd === 'down') aim += entry.val;
|
||||
else if (entry.cmd === 'up') aim -= entry.val;
|
||||
else {
|
||||
forward += entry.val
|
||||
depth += entry.val * aim
|
||||
}
|
||||
}
|
||||
|
||||
input.map(execute)
|
||||
|
||||
console.log("Part 2", forward * depth)
|
||||
|
||||
//console.log(input)
|
||||
const res =
|
||||
input
|
||||
.map(x => x)
|
||||
.push({cmd: 0, val: 0} )
|
||||
|
||||
console.log(res);
|
||||
// .print()
|
||||
// .reduce((prev: any, cur: any, curIdx: number, array: any) => {
|
||||
// console.log(curIdx, cur, prev,);
|
||||
// return {
|
||||
// forward: 0,
|
||||
// depth: 0,
|
||||
// aim: 0
|
||||
// }
|
||||
// })
|
||||
14
src/2022/day1/example.txt
Normal file
14
src/2022/day1/example.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
1000
|
||||
2000
|
||||
3000
|
||||
|
||||
4000
|
||||
|
||||
5000
|
||||
6000
|
||||
|
||||
7000
|
||||
8000
|
||||
9000
|
||||
|
||||
10000
|
||||
28
src/2022/day1/index.ts
Normal file
28
src/2022/day1/index.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import * as fs from 'fs';
|
||||
import path from 'path';
|
||||
import {readFile} from "../../utils";
|
||||
|
||||
let input = readFile(path.resolve(__dirname, 'input.txt'));
|
||||
|
||||
const day1 = Math.max(
|
||||
...input
|
||||
.split("\n\n")
|
||||
.map(a => a.split("\n"))
|
||||
.map(buck => buck
|
||||
.map(Number)
|
||||
.reduce((a, b) => a + b), 0)
|
||||
)
|
||||
|
||||
console.log("Day1:", day1);
|
||||
|
||||
const day2 =
|
||||
input
|
||||
.split("\n\n")
|
||||
.map(a => a.split("\n"))
|
||||
.map(buck => buck.map(Number).reduce((a, b) => a + b), 0)
|
||||
.sort((n1,n2) => n2 - n1)
|
||||
.splice(0,3)
|
||||
.reduce((n1, n2) => n1 + n2)
|
||||
|
||||
|
||||
console.log("Day2:", day2);
|
||||
2242
src/2022/day1/input.txt
Normal file
2242
src/2022/day1/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
146
src/2022/day10/example.txt
Normal file
146
src/2022/day10/example.txt
Normal file
@@ -0,0 +1,146 @@
|
||||
addx 15
|
||||
addx -11
|
||||
addx 6
|
||||
addx -3
|
||||
addx 5
|
||||
addx -1
|
||||
addx -8
|
||||
addx 13
|
||||
addx 4
|
||||
noop
|
||||
addx -1
|
||||
addx 5
|
||||
addx -1
|
||||
addx 5
|
||||
addx -1
|
||||
addx 5
|
||||
addx -1
|
||||
addx 5
|
||||
addx -1
|
||||
addx -35
|
||||
addx 1
|
||||
addx 24
|
||||
addx -19
|
||||
addx 1
|
||||
addx 16
|
||||
addx -11
|
||||
noop
|
||||
noop
|
||||
addx 21
|
||||
addx -15
|
||||
noop
|
||||
noop
|
||||
addx -3
|
||||
addx 9
|
||||
addx 1
|
||||
addx -3
|
||||
addx 8
|
||||
addx 1
|
||||
addx 5
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
addx -36
|
||||
noop
|
||||
addx 1
|
||||
addx 7
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
addx 2
|
||||
addx 6
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
addx 1
|
||||
noop
|
||||
noop
|
||||
addx 7
|
||||
addx 1
|
||||
noop
|
||||
addx -13
|
||||
addx 13
|
||||
addx 7
|
||||
noop
|
||||
addx 1
|
||||
addx -33
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
addx 2
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
addx 8
|
||||
noop
|
||||
addx -1
|
||||
addx 2
|
||||
addx 1
|
||||
noop
|
||||
addx 17
|
||||
addx -9
|
||||
addx 1
|
||||
addx 1
|
||||
addx -3
|
||||
addx 11
|
||||
noop
|
||||
noop
|
||||
addx 1
|
||||
noop
|
||||
addx 1
|
||||
noop
|
||||
noop
|
||||
addx -13
|
||||
addx -19
|
||||
addx 1
|
||||
addx 3
|
||||
addx 26
|
||||
addx -30
|
||||
addx 12
|
||||
addx -1
|
||||
addx 3
|
||||
addx 1
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
addx -9
|
||||
addx 18
|
||||
addx 1
|
||||
addx 2
|
||||
noop
|
||||
noop
|
||||
addx 9
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
addx -1
|
||||
addx 2
|
||||
addx -37
|
||||
addx 1
|
||||
addx 3
|
||||
noop
|
||||
addx 15
|
||||
addx -21
|
||||
addx 22
|
||||
addx -6
|
||||
addx 1
|
||||
noop
|
||||
addx 2
|
||||
addx 1
|
||||
noop
|
||||
addx -10
|
||||
noop
|
||||
noop
|
||||
addx 20
|
||||
addx 1
|
||||
addx 2
|
||||
addx 2
|
||||
addx -6
|
||||
addx -11
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
61
src/2022/day10/index.ts
Normal file
61
src/2022/day10/index.ts
Normal file
@@ -0,0 +1,61 @@
|
||||
import path from 'path';
|
||||
import { readFile, sum } from "../../utils";
|
||||
|
||||
let input = readFile(path.resolve(__dirname, 'input.txt'));
|
||||
|
||||
let reg: number[] = [1];
|
||||
|
||||
input.split("\n").forEach(line => {
|
||||
const [instruction, value] = line.split(" ");
|
||||
|
||||
let addme: number[] = [];
|
||||
let base = reg[reg.length - 1];
|
||||
if (instruction === "addx") {
|
||||
addme.push(base);
|
||||
addme.push(base + Number(value));
|
||||
reg = reg.concat(addme)
|
||||
} else if (instruction === "noop") {
|
||||
reg = reg.concat([base]);
|
||||
}
|
||||
});
|
||||
|
||||
const cycles = [20, 60, 100, 140, 180, 220];
|
||||
|
||||
const p1 = cycles.map(cycle => cycle * reg[cycle - 1]).reduce(sum);
|
||||
console.log("Part1:", p1);
|
||||
|
||||
|
||||
function sliceIntoChunks(arr, chunkSize) {
|
||||
const res: any[] = [];
|
||||
for (let i = 0; i < arr.length; i += chunkSize) {
|
||||
const chunk = arr.slice(i, i + chunkSize);
|
||||
res.push(chunk);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
|
||||
function isPixel(register, cycle) {
|
||||
const range = register - (cycle % 40);
|
||||
return (range <= 0 && range >= -2) ? "#" : ".";
|
||||
}
|
||||
|
||||
const CRT = Array(40 * 5).fill(".");
|
||||
let register = 1;
|
||||
let cycle = 0;
|
||||
|
||||
input.split("\n").forEach((line) => {
|
||||
const [instruction, value] = line.split(" ");
|
||||
|
||||
CRT[cycle] = isPixel(register, ++cycle);
|
||||
|
||||
if (instruction === "addx") {
|
||||
CRT[cycle] = isPixel(register, ++cycle);
|
||||
register = register + Number(value);
|
||||
}
|
||||
})
|
||||
|
||||
//console.log(CRT);
|
||||
console.log(sliceIntoChunks(CRT, 40).map(line => line.join("")));
|
||||
|
||||
145
src/2022/day10/input.txt
Normal file
145
src/2022/day10/input.txt
Normal file
@@ -0,0 +1,145 @@
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
addx 3
|
||||
addx 7
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
addx 6
|
||||
noop
|
||||
addx -1
|
||||
noop
|
||||
addx 5
|
||||
addx 1
|
||||
noop
|
||||
addx 4
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
addx 6
|
||||
addx -1
|
||||
noop
|
||||
addx 3
|
||||
addx -13
|
||||
addx -22
|
||||
noop
|
||||
noop
|
||||
addx 3
|
||||
addx 2
|
||||
addx 11
|
||||
addx -4
|
||||
addx 11
|
||||
addx -10
|
||||
addx 2
|
||||
addx 5
|
||||
addx 2
|
||||
addx -2
|
||||
noop
|
||||
addx 7
|
||||
addx 3
|
||||
addx -2
|
||||
addx 2
|
||||
addx 5
|
||||
addx 2
|
||||
addx -2
|
||||
addx -8
|
||||
addx -27
|
||||
addx 5
|
||||
addx 2
|
||||
addx 21
|
||||
addx -21
|
||||
addx 3
|
||||
addx 5
|
||||
addx 2
|
||||
addx -3
|
||||
addx 4
|
||||
addx 3
|
||||
addx 1
|
||||
addx 5
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
addx 3
|
||||
addx 1
|
||||
addx 6
|
||||
addx -31
|
||||
noop
|
||||
addx -4
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
addx 3
|
||||
addx 7
|
||||
noop
|
||||
addx -1
|
||||
addx 1
|
||||
addx 5
|
||||
noop
|
||||
addx 1
|
||||
noop
|
||||
addx 2
|
||||
addx -8
|
||||
addx 15
|
||||
addx 3
|
||||
noop
|
||||
addx 2
|
||||
addx 5
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
addx -28
|
||||
addx 11
|
||||
addx -20
|
||||
noop
|
||||
addx 7
|
||||
addx -2
|
||||
addx 7
|
||||
noop
|
||||
addx -2
|
||||
noop
|
||||
addx -6
|
||||
addx 11
|
||||
noop
|
||||
addx 3
|
||||
addx 2
|
||||
noop
|
||||
noop
|
||||
addx 7
|
||||
addx 3
|
||||
addx -2
|
||||
addx 2
|
||||
addx 5
|
||||
addx 2
|
||||
addx -16
|
||||
addx -10
|
||||
addx -11
|
||||
addx 27
|
||||
addx -20
|
||||
noop
|
||||
addx 2
|
||||
addx 3
|
||||
addx 5
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
addx 3
|
||||
addx -2
|
||||
addx 2
|
||||
noop
|
||||
addx -14
|
||||
addx 21
|
||||
noop
|
||||
addx -6
|
||||
addx 12
|
||||
noop
|
||||
addx -21
|
||||
addx 24
|
||||
addx 2
|
||||
noop
|
||||
noop
|
||||
noop
|
||||
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
|
||||
3
src/2022/day2/example.txt
Normal file
3
src/2022/day2/example.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
A Y
|
||||
B X
|
||||
C Z
|
||||
76
src/2022/day2/index.ts
Normal file
76
src/2022/day2/index.ts
Normal file
@@ -0,0 +1,76 @@
|
||||
import * as fs from 'fs';
|
||||
import path from 'path';
|
||||
import {readFile, sum} from "../../utils";
|
||||
|
||||
let input = readFile(path.resolve(__dirname, 'input.txt'));
|
||||
|
||||
const roll = (line) => {
|
||||
|
||||
const [opp, me] = line.split(" ");
|
||||
|
||||
if(opp === "A"){
|
||||
if(me === "X") return 3 + 1;
|
||||
if(me === "Y") return 6 + 2;
|
||||
if(me === "Z") return 0 + 3;
|
||||
}
|
||||
if(opp === "B"){
|
||||
if(me === "X") return 0 + 1;
|
||||
if(me === "Y") return 3 + 2;
|
||||
if(me === "Z") return 6 + 3;
|
||||
}
|
||||
if(opp === "C"){
|
||||
if(me === "X") return 6 + 1;
|
||||
if(me === "Y") return 0 + 2;
|
||||
if(me === "Z") return 3 + 3;
|
||||
}
|
||||
}
|
||||
|
||||
const day1 = input.split("\n").map(roll).reduce(sum);
|
||||
|
||||
console.log("Day1:", day1);
|
||||
|
||||
const getWin = (opp) => {
|
||||
if(opp === "A") return "Y";
|
||||
else if(opp === "B") return "Z";
|
||||
else if(opp === "C") return "X";
|
||||
}
|
||||
const getDraw = (opp) => {
|
||||
//console.log(" Draw", opp)
|
||||
if(opp === "A") return "X";
|
||||
//console.log(" fuckmeee")
|
||||
if(opp === "B") return "Y";
|
||||
else if(opp === "C") return "Z";
|
||||
|
||||
}
|
||||
const getLose = (opp) => {
|
||||
// console.log(" verlies dan", opp)
|
||||
if(opp === "A") return "Z";
|
||||
if(opp === "B") return "X";
|
||||
if(opp === "C") return "Y";
|
||||
}
|
||||
|
||||
|
||||
// X lose, Y draw, Z win
|
||||
const roll2 = (line) => {
|
||||
|
||||
const [opp, res] = line.split(" ");
|
||||
//console.log(opp, res)
|
||||
let me, points = 0;
|
||||
if(res === "Z"){ me = getWin(opp); points = 6;}
|
||||
else if(res === "Y"){ me = getDraw(opp); points = 3;}
|
||||
else if(res === "X"){ me = getLose(opp); points = 0;}
|
||||
|
||||
// console.log(me, points);
|
||||
|
||||
if(me === "X") points = points + 1;
|
||||
if(me === "Y") points = points + 2;
|
||||
if(me === "Z") points = points + 3;
|
||||
// console.log(points)
|
||||
return points;
|
||||
|
||||
}
|
||||
|
||||
const day2 = input.split("\n").map(roll2).reduce(sum);
|
||||
|
||||
console.log("Day2:", day2);
|
||||
|
||||
2500
src/2022/day2/input.txt
Normal file
2500
src/2022/day2/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
6
src/2022/day3/example.txt
Normal file
6
src/2022/day3/example.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
vJrwpWtwJgWrhcsFMMfFFhFp
|
||||
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
|
||||
PmmdzqPrVvPwwTWBwg
|
||||
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
|
||||
ttgJtRGJQctTZtZT
|
||||
CrZsJsPPZsGzwwsLwLmpwMDw
|
||||
30
src/2022/day3/index.ts
Normal file
30
src/2022/day3/index.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
import path from 'path';
|
||||
import { readFile, sum } from "../../utils";
|
||||
|
||||
let input = readFile(path.resolve(__dirname, 'input.txt'));
|
||||
|
||||
const day1 = input.split("\n")
|
||||
.map(line => {
|
||||
const first = line.substring(0, line.length / 2).split('')
|
||||
const second = line.substring(line.length / 2).split('')
|
||||
|
||||
const both = first.filter(ch => second.includes(ch))[0];
|
||||
const ascii = both.charCodeAt(0);
|
||||
return ascii > 96 ? ascii - 96 : (ascii - 64 + 26);
|
||||
}).reduce(sum);
|
||||
|
||||
console.log("Day1:", day1)
|
||||
|
||||
|
||||
const day2 = input.split("\n")
|
||||
.reduce((a, b, c) => {
|
||||
if (c % 3 === 0) a.push([]);
|
||||
a[a.length - 1].push(b);
|
||||
return a;
|
||||
}, []).map(group => {
|
||||
const badge = group[0].split('').filter(ch => group[1].includes(ch) && group[2].includes(ch))[0];
|
||||
const ascii = badge.charCodeAt(0);
|
||||
return ascii > 96 ? ascii - 96 : (ascii - 64 + 26);
|
||||
}).reduce(sum);
|
||||
|
||||
console.log("Day2:", day2);
|
||||
300
src/2022/day3/input.txt
Normal file
300
src/2022/day3/input.txt
Normal file
@@ -0,0 +1,300 @@
|
||||
DsPhSBQQQhqmBDhPDsFwjwsLjlRjlttvjvvtRb
|
||||
rNJMNNbrHrtjHLHjvwtg
|
||||
fNbNzZdrZnMnMPnQShFPDmnqFm
|
||||
QWVCFfQffgQCVZzVVpHsHJBqtpspJFRHqq
|
||||
mwDbmnnGNlNcwNDDNRbnNDlJTpBJBtJGtPTLsBGqTqqsqp
|
||||
MlSdnScRnnmmDjSdNSdCzvggWzrgzjvfvrgVzW
|
||||
gsMljbrjlZlWcWMJrWwTwbmwQbmmLDQQLhwL
|
||||
CdgpzdgpgnfThHfFRwhfRf
|
||||
SptgpSpnCNpVSGNPvPGSddcMWjMrjqBsJcWqMcBWcVlZ
|
||||
JcJLQQFWhQJPJpWcwjHvMQvnnlMvzBHd
|
||||
tCtGZrmVRmVGTVTtCfRTCHHNNvdNzmdMvMlNzvwdvw
|
||||
CTGGRftfSGtGTGDLbFchSgSWWWcM
|
||||
QcMFQrvrQbvtczbVbjbMzZzRpqmDDmqqnNzCDCDC
|
||||
SHHfPJssGLPSdHThLhHdRmqNmNssnNmNCNnpjmsn
|
||||
LhLJfTdLJwfgPTdfGccrtjcMrccwvcrrFr
|
||||
jFLLLqDGjbtqLCChpMMhMBvpwMTmffpZ
|
||||
ZnJHRncHHgnrsrZffTdMdMBfmMvfvR
|
||||
NWWPnZrVHrZPCDDQtzDCPLCq
|
||||
jpFjvBZhDFHZdwcmslcslBLLNl
|
||||
dVtTVVCzzfrrMPNLLcnVcPLRns
|
||||
CrzWzTqdWtGCzJtbJCrMjjDFHZQjZSpvFGFgHhHp
|
||||
JjJqMctnhtDZDQtf
|
||||
TrFFlrrCCHPwHwlPHFPzDhsffQQDsVfWwVJQJB
|
||||
HHHGdFlHldTpCCFFlLHdCRJccMnqvqMgnNjjMjjvLMLcSv
|
||||
cMfFcMFcrqgJLFZdrTDdthPGsGmtGs
|
||||
WwjNwnjjBQzVVQHwRDnmtPGhPPsPnnTGld
|
||||
bWHBjWVzpbRzbmScqgZMFcqf
|
||||
RJjPTBJhTNNjfPhRBdqtlgdbGldwtCPgdb
|
||||
ZmrHHmzpvSvvpzvmvDVCGlWVwCWtGtWCddggqf
|
||||
QQpzFrHHQnzHvfTcNshcLRNFJhcR
|
||||
QrPQDrppBQmCmFQm
|
||||
TzqzsLfmsfSTfqzVLftNdJJNJGCwwGdgCwSGNC
|
||||
TVHTfzWsfftsZstnbvrbWbrbppPbrmmP
|
||||
BQrfqrLtJnttqqtQBJDDtBnDzRgldhVVpJlgzpzhpzsgslhV
|
||||
TTNcPZCvZjmPFZjvPHLlWdNLghVhzzlllpVd
|
||||
jcFPbTcZTFcmcjMjjFjbLwbnDBtfqbtBwfwSBnrbGw
|
||||
SZJNJtrNzjjNCzlBBmqmQDBBmDBBjB
|
||||
PGPbGwhLsnvwnVbGPVMZsDsTBBgcZgBBDBfDBf
|
||||
pnnhhvphGVpvRPnJlSFRNNJHZHSdSR
|
||||
hbmDDmwnnVGbhmjNrrWwLNLsWBrw
|
||||
dMrgvcQqdjlBLlfW
|
||||
HzzPSrcHqFHQgzpPcMpQqrtmbbbRhHHVGnZDnVHhVbVZ
|
||||
RwtvdPRvSlTQmHHBQBRL
|
||||
FjVSjrsFVnFQnTHmnT
|
||||
VCVVMrWWjVGgbcNVGCCVdlvfdqfvwbSzwqfwZzwv
|
||||
fmPDwJPDFRmRgPdwwwDNwgwPzhSQzVSzVTQdzHZzHhzQMQzQ
|
||||
sWtGCWtpcqqpNnQjjzhVTTVQczhj
|
||||
tWBGntsCNlqrWswDRfFrbFrPDbPf
|
||||
dmzmjcbQjjQztFNqsqBcMJqNPF
|
||||
nlTWnClWwQDTVnTrsMsCRBPZRJRJqRJq
|
||||
wTrhwpVVvgvlDpTvVWVDdLfzgbLtbzSQLSzzjzLz
|
||||
RWZdHvRdBRGbbvCjJnbn
|
||||
pqqpSwzpSSbCwPwjlwjl
|
||||
gDzzqSVzqrThpDBtRtCZdQRQLrQQ
|
||||
GRqTGqtmTVdGHHVVNNlhPlMqbNqNDbqW
|
||||
LzQSdFnfznfwBcLcnFppBBDDMPMPhDbhlwbWPlbWMjrD
|
||||
QznFnLZFvVvHRgsddG
|
||||
BBHBfBHFdSltmWJvqtNtHq
|
||||
TQDrrVMzVDnWnNZDJc
|
||||
gWzprTCrCMQzGGjjhwFwdffjfl
|
||||
LLLSSSzBBlBLsszncCBZSPSMMMpdWTdrmmnfVGVmMfmrmm
|
||||
DghttvwhHRvjJthNJwhVtDHGpddMWdMmrMmfGdppjWTfpq
|
||||
gbJRthQDDRvwtDhQhDFPcVcbPczLzPBScBBF
|
||||
sZsZpTtLCsbspZtTwrCwrwtDmNNdJmmqSJfqmfNGNmHqGdqb
|
||||
nQvjTcjQglFVlllMFMVFqWfNqnNHHHdfSfHqfSJq
|
||||
hFvvgFcFVzphpTrrwZDp
|
||||
qJqfhsBpfSpchpqcrqwCDvvCDQndmpwDtnRQ
|
||||
jWHPZWWjZsCmCWRDmQ
|
||||
PPzMGHlzMNsPLPlZsllgsNrhNVBqhFVBbBSqFFBFrV
|
||||
RnRsFFdSzmgwvQsqwc
|
||||
lbgHGMBHlWWWlfWGGBtGwqDpDwmcpMrrqrQDZrMZ
|
||||
GGJLBVJbVGjGtHVfJtWGHBLLPdzdCghnRnRnSShgNnhnddhj
|
||||
VgzLFjjwhhSwFhVZgRhRgHHCCvdZdrqqCTvBCrqvvr
|
||||
ncnNbGMcPpvHFrssdBHM
|
||||
cnctcNNbQGWFJctftgVmzShzzwwVwgmwfR
|
||||
pFWmSSFGQlvTbwWTwH
|
||||
jdBgNhRgMftNBhPbhHnZHlTTZcwZ
|
||||
lfBNRjCtCfMjsBfCjgfNBRMppGpJqsJQGrrmmJDpGmDDFG
|
||||
GznngnhzccVdgjbbVjVjVbVLwwQJmQMrLTZhJmZLQTJWmm
|
||||
pDBSslPCFPCpvCqvpPBQTlQLrdlJWrLJLmrlrr
|
||||
psSsBptpCBdjtcjNVcGG
|
||||
sssppsmchwspFLtvHhQJMtFb
|
||||
rRLDqRVLNSMvFSSV
|
||||
WDrLnzrDqzRqRzzfLgRnzrnsssZZZsZBgCwwmBppwBspZc
|
||||
MtPbwvzzVtzfsqGGVpdSjsLd
|
||||
DnNRCDJBnHJDHDnrDTRcnNZpZSsSLqjpdqqqSMqdddTj
|
||||
CFRFRFHgDRnRgMtfFvvwzwvwvzWv
|
||||
PNpFPncvvchPpNjpFhvPhPLmBwMgDRRwRgMDhBmLzBDD
|
||||
trHSrdTtslWrSWmfzgmMnfBzmn
|
||||
JsrQsJHHlsVqTjjpbbNnQNNpGG
|
||||
sVQCdsmGlnlCmnGmQQhGCJJNvNjpgqhqhvPgpgPqjpcpcW
|
||||
DMSfSbHLHbSDBBzLNvccWRcddvPjNj
|
||||
FSwHfTFdFsmJlnTTmV
|
||||
FctwtTTCScvShFqtwScrcTSCJQGNndGHWJNQHWHZdgJrJgGN
|
||||
jspLlfPlpfsDjBspfllWgdWHQggZHngHNGdsWJ
|
||||
lRMpBlPmSFRTcvZv
|
||||
TVZpRRVvFRVpTZRfFhFvvzGVwrwwwdDBMwQrgcDtMtDDwZrL
|
||||
jsNsWqWjNQCNWbjPMcBLPgBtrdMwdrdL
|
||||
SJSsmqlSNljbmlNjsbQVffzGRvzmmVhQpVGz
|
||||
BFFMvcwMwwpFFfpbDMqPVgLVgmLDPR
|
||||
JtSsSzJssQJJWjRZzgLnDgqLPZgzbg
|
||||
dsdtWQWdRGjTRNQNQvGfHCCFpvfGwlCfCp
|
||||
zzWGqWnqnwWCvCrHffHRpBpBBRSJzRFFDhSQFR
|
||||
VPVsZMNTLsMvPsmBJhllFpFBTJFQpl
|
||||
sZtsNsZtdZgjbwggjnbvqr
|
||||
QpTvrphmDvvddfcJJHTTncMlMG
|
||||
bRZZPRwjgzzlSSjGlnlSJS
|
||||
BZzBzssWgwzzwNBsgsPBgszmQptqrrGdvdWmqdhhFQDpQF
|
||||
FfMtzSqlDlzfMhPFhPtffNRsCgSgCCGspRpRGSsgsg
|
||||
WTcWLTTVnWmrVdLrcHmNGNCZwCCggpgDRwpCnR
|
||||
JcdWJHTJWdJdjJccrLvlFltFQQvPFDMjqqlP
|
||||
NfjFNNZPDQVJVWpCbQpJ
|
||||
lcmdzlmzBtRSTlTTcncsVSbhpLWpWgsWghgsVS
|
||||
mBTRRmGccRtBwDbrGPbrMMrF
|
||||
VVQqlsGrVsMWBNFNMQHF
|
||||
TfzZfDgjgnLGjjztTncCFwwNmdvNcwwNBvHNFwvd
|
||||
jzjDgZzjntGJZzCnhrrSlPVsJslpslPq
|
||||
dVhpjGPdjHhqHgtHJJ
|
||||
sFzrzllQswDwFbcmBlgvZTCgvqTCfgHQJtqT
|
||||
nDbBsFzzrrtFrlwzPdSVMWMVVMSnGNLd
|
||||
wqJCjqChmwMLmMmprNgG
|
||||
DNTtdsdWcHdNspGQggnrgLnQpc
|
||||
SZvFftdddDsDTtttTDJNCCwJJZzbbCjwwVPj
|
||||
VstwZCwslBZQDBjfDDBDfS
|
||||
rvHnmMRrTzmMrmhRppbhDfpjfbjbctjD
|
||||
rPFLRLmFvvLvHvTCtqsVVwldGZGPGV
|
||||
SNZDJGfvwgMgfgmLmLcmBqgWgQWr
|
||||
hPnPTnVGsPRqLWpTmQqQ
|
||||
tsbnFhhjhSdGJNCjSf
|
||||
QSbGgBjfTCMWFNPFFtDghPrP
|
||||
JqHqJVzZzwJJHLlqQptDhPrctpPDtnLF
|
||||
zZmwJwdwdvHddVJvZqdzHlfGBbsCmMTsWCBCjsGGBbMQ
|
||||
gVmLtpWrFTFBLtpcFNbvhNNnTnvnQRlQQv
|
||||
GHjjqsMqwZZJdqGfZjfZGjQDDhvQNzznzRzRwDNbvgzv
|
||||
sZGPgssMqHZpPptmCcpCrP
|
||||
CZCNNLmwzwCGMZQMQsFNWplvpsJBWpFHBp
|
||||
SPbSbDRRbnDqggnbVbVrbRWHJFTlBBcTvWvsPvFpHTcl
|
||||
tVgSvqVbnqDdgQzMQMGMmzthCw
|
||||
mpbPQlblbwSlfSPGBpBGPpBFgMMtLFSHMLVVDVdtHLNctF
|
||||
WnhZsrJhTnWrgZdZgHNLcLtt
|
||||
hjCsCWRhjzhTjnWnQBbmPQQPLBGfqjwQ
|
||||
BFrzdtmRmpFtFwwmjjzNQllPshqHvjNh
|
||||
fWCLLCMJnCDbgfMJhPsPHvqvqVsssQ
|
||||
WbLnCZnvprpmZrGd
|
||||
gjMzTGBjWFBCCSSrBC
|
||||
bddJJndbdJfwPPthrrSSSsFSSg
|
||||
NJHbZbbvvWGgjWgT
|
||||
dpfphMggHdQcwftMMgdtzWGfGWnDBnmvnVJVvfmn
|
||||
CqPFTZPSNCTsZZZRLzGmcGVzDLGvLWBWJm
|
||||
TCrTNSScPlplpHrQrQ
|
||||
lqrCvhWFvMGWgfHPgLfjfdgG
|
||||
zjmbjSnzRzVVRmzBRtwjVQnNLfdPgfLdfTtNLPHTNNpppf
|
||||
mbSZRzQRBnnzbQJbmjmSbmVhlslZMrclWFrrqWCWsFhchF
|
||||
mpfNshshflNthWfJCBBdmnQbQBZQdn
|
||||
VFVRccgGTqTrHTbWBFjJBCFFJCCQ
|
||||
PvTDHqHqPPGVqqhwfNlWlDhMltlh
|
||||
HmLLgWVjJwhwWLgjjhmVHLLLlSzBlBlSvBvBFGvtdStJSSvq
|
||||
TRRrPMsfQTbRRCZRnTMRZZTCcvSccqBqBBlzdFvBqFsGBcts
|
||||
bRNPbRCZMCrQNfPLdhVpLDVgDhNHWV
|
||||
sPJFDsSsVLgHjLHPbj
|
||||
vCnRQhhRQdVQZlZdbHNMlqNNjgjbpbBL
|
||||
ChhCCCWTWnnmvmGtztStzScwrcVcFW
|
||||
NRBTNDBglSSgDwCClQQSFFHdLLsFbPFFLt
|
||||
McpmWccMWHZPcLstbt
|
||||
MWnWphVMvvzJzpWJWmVphjrDDBBTRwRDDDRRCnPDnqgg
|
||||
hsnnhhLljLPTmZwvdZdZjmmz
|
||||
RQNNDpNMSZwvsmqstN
|
||||
QFMFRDVDsHSpRpHSMRHfGGGTLhCChBGhBhBFBJ
|
||||
TTbltCvClzvzCZtwtwLTtQQQgjNgmjgQRRRQSjQLjR
|
||||
HPpnZHcJsdnnfsdVHHSSqghhmqBSSqSmBfNj
|
||||
VMJJdnMPrMGVrzvCZwZWCzCt
|
||||
CcQnBBCfBvRzDlsS
|
||||
PdbPPCbhGGpDSDlDDhvDJl
|
||||
HmHWPWdbHnCwCHCr
|
||||
JHlmJcMWHQcPmlmJMmMZPfwTTRDfgdDBfRtgQgdfBw
|
||||
zVvFrqGjzWGVrqvjvNFpspvVBgNNddtTgghhRTwgdDwwwBfT
|
||||
bVFrrvsvjWGVsCsqpSHZmMPJlJnCcLcPZZ
|
||||
QrrQZFZnRtnFRTrnlFTtRZwpGGwzGszhjzbsGzzhmjjhhmhf
|
||||
SgvpDSJSgPBSDPDNgpggmsMhMmffsMmzfJmzHHMj
|
||||
WNVcCPgSSDCddSdWCpNBclCQQFRQQlnTLFLRZQnLtt
|
||||
tgvqWqzvntdlzNzzHrbPrMhHMhhrVrjPmC
|
||||
FGTGGRGTffcJRpQcJJwmjhPLhjnCQPrLPVQrMr
|
||||
SppRSDRwFnJJwwswTDdtzBzqWWzZDldNgtvl
|
||||
sjzPjLphMSrlppSp
|
||||
fbGqgwTqgVTFFcgGTTGcQvfHQZRlSrSlSmMNMBRNNNrZmm
|
||||
MVcFGTFtqjsJLjjtCd
|
||||
jVJqTRHjjtDjZnVJVVjnNdwfCFPZmPgCCgCZGCFFrrFg
|
||||
LSLBMBWsbBBCgfdrFd
|
||||
ShbbzdzQRNNNVhDN
|
||||
JwbSRqmSwRwcpmbSSVfhNBTVGGRnNNzRNh
|
||||
ZPfQPjZZrffQZszhzTnVGBvntsNz
|
||||
rLjggjQgQgFdPQjLFQZgwLMbWccLSwWHqHfSqpwc
|
||||
cBhzNpztzHNrpHSHQrhZjZqdJRRgPqjhjqqP
|
||||
bQwsMTswwVjdZMVRJM
|
||||
vGWCTDCTQvvtlvQQ
|
||||
mHVmTTsmzRmRHffmmfMGBzSPMhSWWdDWDSGB
|
||||
VNcnNbtqqJbcbvgvWhShDBDPhjgPhSjB
|
||||
FrrbCnqJcbCJcFFbnqJlppCTfQmfmZQTLVswRLZp
|
||||
rWWppSStfRBLfHPdHHDzlldZ
|
||||
QrTnQmmVCqvrvJvzJZPHvzHsDs
|
||||
qgMMmrTTCcnQQmCNQNQmgTpwRWRtwtpcBWwjSRSSpttW
|
||||
SzWQwwqVbQzwGSfVwffVwbqhFGFFMgGLGMlNMcnNgcvlMg
|
||||
ddZHHsrCdBssDsHmChFLNNnMvmNnnnFncL
|
||||
rpJJdHZJdZHQSRJbSfVhww
|
||||
jLtFhNwNNvHnjFVvQLQLHhfbGDMPfffpllpttZMPPZZb
|
||||
VmrqszVmgCWWggbPGclPlZbcZCbf
|
||||
JdrTmVTVsqsRJHvQnnhwhBLH
|
||||
vpdBvsvdVvSPhvQFCgrRmhjqqRgWcWWgmf
|
||||
tJDGbZHbjRHNrrBj
|
||||
DnMnzGJJwtzVSzzBzTBSTF
|
||||
hZMDbQhMhlMDJrDrPMJRRqGJSvFvSwFSVdvGvwSFqq
|
||||
HjjzcRTnpGVSGGFWHH
|
||||
pssmjctLzpsRRnhlQbPfPrgDbZls
|
||||
FJMhPhnTMGmBFdnmlrfqfCcwlwCwCv
|
||||
pjHLsLbjjRHsHsjDjVsgDRjzCnfCfzqrqvwgflcvcvvgqz
|
||||
njtpHZnLLQGhTtTWSSSh
|
||||
NMddMTDrrjNnrnMWMrlnPwNwftBtGvptGjBHgBgpfCCSfgvf
|
||||
mqRqLFZRVFbtgBSCbGWWHp
|
||||
LZZRmQhVLLFzZdTQPndPNTTnQW
|
||||
CprQrcpqhHhpppchpphdcdpLMRMGsVGGsMsLbZbtbfMRmtbG
|
||||
DzlgTjwPTlSSSCDSlggNmMRtbsstsMfbwtVssMmt
|
||||
TNCNSBNJJTNPJjCTBDzjlJrvvcQrrhphWBqHhHdqrnrr
|
||||
ScbcbglMPRSmvclTlzMTdhVHhhjfdsdhrVDzfjrD
|
||||
LJGtpQwpQBBCttJLGqtqGHhPfDdHwjjhrVrhdrdshr
|
||||
WCpZQCGqtqQWtQWplZPcvMmgmvPccbvT
|
||||
tGWqthqGVdzBWwdd
|
||||
BZvZHFFHZrHZvZNRRHHZNHrMMTzRMTdTzbgDVMVssTDTwg
|
||||
JnNmrHHNrCGBPPnGGc
|
||||
wvFvZBmppBdSLcvshcLrgl
|
||||
bTQqJJHJzJjDQjQtzRVJztDHslgNNVLcgSrsSsWrSslWgrgL
|
||||
TqHHjQnbHTbbmZBBcFMpmBwn
|
||||
ZFCqSlCPdCRTLWWTQQLLQS
|
||||
GjggHcvsggHVTVBLnlcpBQ
|
||||
hvGhlrtjmjrHHhjsMPFNPdtqMPqqRfCf
|
||||
cgRwVfVzrgqqwZctTztFMFMTCdPmmF
|
||||
bWJsSJHpTDRDTWMC
|
||||
sHHNbshnlJhJjBsjsbnBHbZcqrZZQwqvvZcrwwvRcZnr
|
||||
ttgVBtMbttngmHJVpzlzZlppzw
|
||||
cPcsRPmPPQfGcccRQSSZzzvzlflzZHvJppzJzT
|
||||
sQPSCPPWccWWWqsQqRCQFNRMmnbnjjNbgDdBjhBrdbdDbd
|
||||
gSsZDSgdQZgWSgddwLDLLfCDBqvlhBlClqtqjhvBhB
|
||||
RMcsVMcsbVsrPrmJcPHHVvfjjCnvvfCqhlqvqqqq
|
||||
NFMRRpHPgzszGppG
|
||||
WmmZZNJCgCBZCzPvmBCmjWjjqFtFqjFjbVwqwjtt
|
||||
ppDMpdMfSfSSNtlwqbqwwq
|
||||
dTGDhdnfLMLhfDDpQvZNZgmrmrQJgrLQ
|
||||
jrqRqfNNhrVvcTVdpTscpd
|
||||
tGWBlLggWGddTspZZd
|
||||
JJzWtQgQsDbBgDWsgbFrPrRJNMJMPqMNfHjH
|
||||
GdvVbbWsWdvWGDvWZcbFBTBZCzCjwzrhPBJjzF
|
||||
nQPfSHnglfpnMSngnMgJTprJCCwwrwCwpTpCFj
|
||||
SQQHSttRqggmlVsNcvWdRvbWPN
|
||||
WLNLCWLsSJgHFrSHrM
|
||||
gDbzRTcmbzPPgPPdtBctfHfrMMQfGFJrhQnMfGJR
|
||||
dmmzzqZdDqqTLLwjgZgNljws
|
||||
TCqsDHssmDsDGVGlVcMccGDV
|
||||
FLntWWnnFzFgzzbtbznLBtlfjGZmcfFGVNFGlVZcMNlN
|
||||
PpbLLmpgbRzqpCHwChQqwh
|
||||
lVBPVgflgBVVrVTTwgwBPmgflDQjnnGvqjGDDFjGlGnvqHHJ
|
||||
ScCLzdCZdbLSbFdFqvDDdGMQGQ
|
||||
bchNCLRWSbzCbNRzbWRmsrhQwVVwBhmQpPwpgV
|
||||
GmfHCCPqWqHLWLCfRJpbrrbQphwZbZ
|
||||
STVDQzNnzMzNdstMDzzNtZwFhrlwVJJrJlFFJRFwFR
|
||||
DzSvzstnszMnjQcqggjPqQBcqq
|
||||
BzNwLTqwTjrBrljWpBlrQpBpsCGGCtpssCMttDtHsttMDCHp
|
||||
mnrJVmRhhvJVcHtsGHMCnZCPZM
|
||||
bvSmVbRhbgmmSJflzNLrzqzfWfqBWr
|
||||
qsZLqqFNhfrGnJFv
|
||||
DVjVmWlcjVjdDTDlbbTDTzmrCnMmJGnHnmCHfJGfvnfM
|
||||
lVRdDglTlTgVlVjbWWVzVjvNZqSBsLZNtqRsLBqLqQtL
|
||||
ffRRfLVHZHfJHVJcMrMZZwwTzGBBzBTBjGTwrwdSCj
|
||||
qmWbWQbqnbvWhbQPGnGNnpvwSzltpBldtSdzllptCSjTTt
|
||||
vWsbnbWnNvQQQQvsRRLfJRRVGfDcfV
|
||||
PpqrvswPvvvPsNqmDLDttCCcHHZVrCtW
|
||||
hgSddBhghQMdbhbwhgSdQgCCctZcDtLntLttCVLtSLCc
|
||||
dGzdQMFzQMdgGGlGJMzBgBwRqNNfmmTsvfRfJTpwjmpP
|
||||
pcphpdrWDmTgHWMtRWqHRVVH
|
||||
SbGcGGQnvNQGvsjBtVHBLjvqVPVB
|
||||
lzbQCzbZllSzQslpCJpJJDggcggfDT
|
||||
ffrTlhrVrfCsDVTsWzGBBZcBRBqRBWtGtZcq
|
||||
QNFmFHrHNSSmSLJdJrNGZLbGjbcBjBGjqcbgjc
|
||||
ddQvPnHddnQJHSHSFPdnFfDDTfDMMCrwMlPTwDCsrC
|
||||
NBnrNHQHBscvhfBM
|
||||
bbGtgWWWqZFmnZGZbmVCdMzvvShfzfGcdcfMSS
|
||||
WqbjnmbnjWgmFFgtWVbWZwNTNLjNprNwQLDwrTrHQr
|
||||
lwwlcjlzQRBcBccbdLCVnNVWJJzfLndd
|
||||
pZDMtZpSDMZpMZMsPtHVNJVfRCRddVndnJLSJd
|
||||
mDTZvTqtDDHttRPcqhQlwgGlghbqBh
|
||||
DTspTqssqTbdmCMwVmnmlfCD
|
||||
PLPWjjrSjvPzqZvjvRqjLtPwnnHCmWVcncMnnwmncHcHll
|
||||
RFztFjjqjQFQTbdTbQ
|
||||
hTFSVSdhMMVMFjjgbthcbzczcg
|
||||
DvwCJVJWWJDRnfmbDmccfmmgfb
|
||||
QrJvPGWWnpVMqdZsZpqM
|
||||
gRLcHbgnfpgpJjlqqp
|
||||
SFwrTHFBqlZtBPZq
|
||||
HTzDwmSvCvCmsmmvTSwvFwcfRRNRLcQRWNssNNbRWLWL
|
||||
PpMgDMDnsWSnjBQnrjbn
|
||||
LFcVVGChCFdhdVFZVpVCdVbvQbRrbvBBbBjQSJZrrJrR
|
||||
FNwGNCCFHcVTHcFdHHHTDzMzfsgzwpPWMmPflmtt
|
||||
9
src/2022/day4/example.txt
Normal file
9
src/2022/day4/example.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
[D]
|
||||
[N] [C]
|
||||
[Z] [M] [P]
|
||||
1 2 3
|
||||
|
||||
move 1 from 2 to 1
|
||||
move 3 from 1 to 3
|
||||
move 2 from 2 to 1
|
||||
move 1 from 1 to 2
|
||||
27
src/2022/day4/index.ts
Normal file
27
src/2022/day4/index.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import path from 'path';
|
||||
import { readFile, sum } from "../../utils";
|
||||
let input = readFile(path.resolve(__dirname, 'input.txt'));
|
||||
|
||||
let start, elapsed;
|
||||
|
||||
|
||||
start = process.hrtime.bigint();
|
||||
|
||||
const day1 = input.split('\n').filter(row => {
|
||||
const [firstElf, secondElf] = row.split(',').map(elf => elf.split('-').map(Number));
|
||||
return (firstElf[0] - secondElf[0] >= 0 && secondElf[1] - firstElf[1] >= 0) || (secondElf[0] - firstElf[0] >= 0 && firstElf[1] - secondElf[1] >= 0);
|
||||
}).length;
|
||||
|
||||
elapsed = (process.hrtime.bigint() - start) / BigInt(1000);
|
||||
|
||||
console.log(`Day1: ${day1} - calculated in ${elapsed}μs`)
|
||||
|
||||
start = process.hrtime.bigint();
|
||||
const day2 = input.split('\n').filter(row => {
|
||||
const [firstElf, secondElf] = row.split(',').map(elf => elf.split('-').map(Number));
|
||||
return (firstElf[1] >= secondElf[0] && secondElf[1] >= firstElf[0]);
|
||||
}).length;
|
||||
|
||||
elapsed = (process.hrtime.bigint() - start) / BigInt(1000);
|
||||
|
||||
console.log(`Day2: ${day2} - calculated in ${elapsed}μs`)
|
||||
1000
src/2022/day4/input.txt
Normal file
1000
src/2022/day4/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
9
src/2022/day5/example.txt
Normal file
9
src/2022/day5/example.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
[D]
|
||||
[N] [C]
|
||||
[Z] [M] [P]
|
||||
1 2 3
|
||||
|
||||
move 1 from 2 to 1
|
||||
move 3 from 1 to 3
|
||||
move 2 from 2 to 1
|
||||
move 1 from 1 to 2
|
||||
46
src/2022/day5/index.ts
Normal file
46
src/2022/day5/index.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
import path from 'path';
|
||||
import { readFile, sum } from "../../utils";
|
||||
|
||||
let input = readFile(path.resolve(__dirname, 'input.txt'));
|
||||
|
||||
let start, elapsed;
|
||||
|
||||
|
||||
start = process.hrtime.bigint();
|
||||
|
||||
const [stack, rules] = input.split('\n\n').map(entry => entry.split('\n'))
|
||||
|
||||
let stackInput = stack[stack.length - 1].split(' ').map(idx => idx.split(" ").join("")).map(idx => []);
|
||||
const indexes = stackInput.map((arr, idx) => stack[stack.length - 1].indexOf(idx + 1).toString()).map(Number);
|
||||
|
||||
for (let idx = stack.length - 2; idx >= 0; idx--) {
|
||||
for (let idx2 = 0; idx2 < indexes.length; idx2++) {
|
||||
const char = stack[idx][indexes[idx2]];
|
||||
if (char !== ' ') stackInput[idx2].push(char);
|
||||
}
|
||||
}
|
||||
|
||||
let stackInputPart2: any[] = JSON.parse(JSON.stringify(stackInput));
|
||||
|
||||
for (let idx = 0; idx < rules.length; idx++) {
|
||||
const [move, from, to] = rules[idx].split(' ').filter(el => !isNaN(Number(el))).map(Number);
|
||||
for (let num = 0; num < move; num++) stackInput[to - 1].push(stackInput[from - 1].pop());
|
||||
}
|
||||
|
||||
const part1 = stackInput.map(buck => buck[buck.length - 1]).join("");
|
||||
|
||||
console.log("Part1:", part1);
|
||||
|
||||
elapsed = process.hrtime.bigint() - start;
|
||||
|
||||
for (let idx = 0; idx < rules.length; idx++) {
|
||||
const [move, from, to] = rules[idx].split(' ').filter(el => !isNaN(Number(el))).map(Number);
|
||||
|
||||
let cratemover9001: any[] = [];
|
||||
for (let num = 0; num < move; num++) cratemover9001.push(stackInputPart2[from - 1].pop());
|
||||
stackInputPart2[to - 1] = stackInputPart2[to - 1].concat(cratemover9001.reverse());
|
||||
}
|
||||
|
||||
const part2 = stackInputPart2.map(buck => buck[buck.length - 1]).join("");
|
||||
console.log("Part2:", part2);
|
||||
|
||||
513
src/2022/day5/input.txt
Normal file
513
src/2022/day5/input.txt
Normal file
@@ -0,0 +1,513 @@
|
||||
[T] [P] [J]
|
||||
[F] [S] [T] [R] [B]
|
||||
[V] [M] [H] [S] [F] [R]
|
||||
[Z] [P] [Q] [B] [S] [W] [P]
|
||||
[C] [Q] [R] [D] [Z] [N] [H] [Q]
|
||||
[W] [B] [T] [F] [L] [T] [M] [F] [T]
|
||||
[S] [R] [Z] [V] [G] [R] [Q] [N] [Z]
|
||||
[Q] [Q] [B] [D] [J] [W] [H] [R] [J]
|
||||
1 2 3 4 5 6 7 8 9
|
||||
|
||||
move 3 from 8 to 2
|
||||
move 3 from 1 to 5
|
||||
move 3 from 1 to 4
|
||||
move 2 from 7 to 4
|
||||
move 3 from 7 to 4
|
||||
move 8 from 5 to 7
|
||||
move 2 from 1 to 8
|
||||
move 7 from 3 to 2
|
||||
move 1 from 5 to 2
|
||||
move 1 from 6 to 7
|
||||
move 2 from 5 to 9
|
||||
move 1 from 9 to 1
|
||||
move 3 from 9 to 6
|
||||
move 5 from 6 to 2
|
||||
move 10 from 7 to 2
|
||||
move 3 from 8 to 9
|
||||
move 7 from 9 to 2
|
||||
move 1 from 1 to 2
|
||||
move 1 from 9 to 6
|
||||
move 1 from 4 to 1
|
||||
move 1 from 8 to 2
|
||||
move 11 from 4 to 2
|
||||
move 1 from 7 to 9
|
||||
move 1 from 4 to 6
|
||||
move 1 from 9 to 7
|
||||
move 1 from 1 to 3
|
||||
move 1 from 7 to 5
|
||||
move 1 from 4 to 9
|
||||
move 1 from 5 to 2
|
||||
move 1 from 3 to 8
|
||||
move 1 from 6 to 9
|
||||
move 1 from 8 to 6
|
||||
move 11 from 2 to 1
|
||||
move 1 from 6 to 8
|
||||
move 7 from 2 to 1
|
||||
move 14 from 2 to 7
|
||||
move 1 from 6 to 3
|
||||
move 1 from 8 to 2
|
||||
move 1 from 3 to 9
|
||||
move 7 from 7 to 1
|
||||
move 1 from 6 to 5
|
||||
move 5 from 7 to 6
|
||||
move 4 from 2 to 8
|
||||
move 3 from 6 to 7
|
||||
move 3 from 7 to 8
|
||||
move 9 from 1 to 3
|
||||
move 8 from 3 to 7
|
||||
move 1 from 3 to 1
|
||||
move 2 from 2 to 3
|
||||
move 1 from 6 to 7
|
||||
move 2 from 1 to 7
|
||||
move 7 from 1 to 6
|
||||
move 1 from 3 to 5
|
||||
move 2 from 5 to 3
|
||||
move 7 from 6 to 3
|
||||
move 9 from 7 to 5
|
||||
move 1 from 9 to 1
|
||||
move 4 from 8 to 5
|
||||
move 7 from 1 to 5
|
||||
move 4 from 7 to 2
|
||||
move 1 from 7 to 8
|
||||
move 1 from 6 to 4
|
||||
move 10 from 5 to 3
|
||||
move 8 from 5 to 1
|
||||
move 2 from 8 to 3
|
||||
move 2 from 8 to 9
|
||||
move 8 from 2 to 7
|
||||
move 4 from 9 to 8
|
||||
move 13 from 3 to 7
|
||||
move 1 from 5 to 3
|
||||
move 6 from 3 to 9
|
||||
move 10 from 1 to 9
|
||||
move 1 from 3 to 4
|
||||
move 6 from 9 to 7
|
||||
move 1 from 5 to 8
|
||||
move 14 from 7 to 6
|
||||
move 14 from 6 to 1
|
||||
move 13 from 1 to 8
|
||||
move 1 from 1 to 2
|
||||
move 9 from 8 to 9
|
||||
move 6 from 8 to 5
|
||||
move 2 from 4 to 6
|
||||
move 1 from 8 to 1
|
||||
move 2 from 2 to 1
|
||||
move 2 from 8 to 6
|
||||
move 3 from 1 to 2
|
||||
move 3 from 3 to 9
|
||||
move 16 from 9 to 1
|
||||
move 3 from 2 to 4
|
||||
move 3 from 7 to 2
|
||||
move 6 from 5 to 4
|
||||
move 5 from 7 to 3
|
||||
move 4 from 6 to 1
|
||||
move 10 from 2 to 9
|
||||
move 13 from 9 to 1
|
||||
move 5 from 7 to 2
|
||||
move 2 from 4 to 6
|
||||
move 1 from 9 to 1
|
||||
move 2 from 9 to 5
|
||||
move 2 from 6 to 8
|
||||
move 2 from 5 to 3
|
||||
move 1 from 8 to 3
|
||||
move 31 from 1 to 7
|
||||
move 2 from 1 to 5
|
||||
move 12 from 7 to 3
|
||||
move 11 from 3 to 2
|
||||
move 1 from 8 to 4
|
||||
move 6 from 4 to 5
|
||||
move 1 from 3 to 4
|
||||
move 8 from 3 to 2
|
||||
move 5 from 5 to 6
|
||||
move 2 from 6 to 7
|
||||
move 4 from 7 to 3
|
||||
move 1 from 6 to 9
|
||||
move 13 from 7 to 6
|
||||
move 13 from 2 to 3
|
||||
move 1 from 4 to 8
|
||||
move 10 from 2 to 3
|
||||
move 3 from 7 to 3
|
||||
move 2 from 2 to 1
|
||||
move 1 from 8 to 2
|
||||
move 2 from 4 to 7
|
||||
move 1 from 9 to 2
|
||||
move 3 from 7 to 3
|
||||
move 1 from 5 to 1
|
||||
move 2 from 5 to 2
|
||||
move 15 from 6 to 7
|
||||
move 4 from 1 to 9
|
||||
move 22 from 3 to 9
|
||||
move 7 from 3 to 9
|
||||
move 4 from 3 to 8
|
||||
move 4 from 9 to 4
|
||||
move 3 from 2 to 4
|
||||
move 5 from 7 to 1
|
||||
move 7 from 4 to 7
|
||||
move 2 from 8 to 4
|
||||
move 1 from 4 to 8
|
||||
move 3 from 1 to 5
|
||||
move 2 from 1 to 4
|
||||
move 1 from 2 to 9
|
||||
move 2 from 5 to 7
|
||||
move 1 from 5 to 9
|
||||
move 3 from 8 to 6
|
||||
move 8 from 7 to 1
|
||||
move 6 from 7 to 1
|
||||
move 10 from 1 to 9
|
||||
move 3 from 6 to 2
|
||||
move 2 from 1 to 3
|
||||
move 2 from 3 to 6
|
||||
move 3 from 7 to 4
|
||||
move 2 from 7 to 1
|
||||
move 1 from 2 to 5
|
||||
move 13 from 9 to 5
|
||||
move 12 from 9 to 3
|
||||
move 6 from 5 to 3
|
||||
move 2 from 9 to 1
|
||||
move 11 from 9 to 3
|
||||
move 1 from 4 to 6
|
||||
move 2 from 5 to 3
|
||||
move 1 from 1 to 8
|
||||
move 24 from 3 to 5
|
||||
move 2 from 9 to 3
|
||||
move 2 from 2 to 4
|
||||
move 1 from 9 to 2
|
||||
move 2 from 6 to 8
|
||||
move 5 from 3 to 5
|
||||
move 2 from 8 to 9
|
||||
move 1 from 9 to 8
|
||||
move 4 from 1 to 4
|
||||
move 1 from 9 to 4
|
||||
move 1 from 8 to 4
|
||||
move 1 from 8 to 4
|
||||
move 7 from 4 to 5
|
||||
move 1 from 1 to 8
|
||||
move 1 from 6 to 5
|
||||
move 35 from 5 to 4
|
||||
move 18 from 4 to 3
|
||||
move 6 from 4 to 3
|
||||
move 8 from 5 to 8
|
||||
move 8 from 8 to 1
|
||||
move 2 from 4 to 9
|
||||
move 23 from 3 to 1
|
||||
move 1 from 8 to 5
|
||||
move 1 from 9 to 1
|
||||
move 1 from 5 to 1
|
||||
move 1 from 9 to 4
|
||||
move 11 from 1 to 2
|
||||
move 16 from 4 to 5
|
||||
move 3 from 3 to 5
|
||||
move 9 from 2 to 5
|
||||
move 1 from 4 to 1
|
||||
move 2 from 2 to 6
|
||||
move 1 from 2 to 9
|
||||
move 1 from 6 to 2
|
||||
move 1 from 3 to 5
|
||||
move 1 from 3 to 9
|
||||
move 1 from 2 to 9
|
||||
move 23 from 1 to 5
|
||||
move 1 from 6 to 9
|
||||
move 1 from 9 to 8
|
||||
move 27 from 5 to 1
|
||||
move 1 from 9 to 3
|
||||
move 18 from 5 to 8
|
||||
move 6 from 5 to 7
|
||||
move 1 from 5 to 6
|
||||
move 1 from 9 to 8
|
||||
move 12 from 8 to 3
|
||||
move 1 from 1 to 4
|
||||
move 6 from 7 to 8
|
||||
move 1 from 6 to 3
|
||||
move 1 from 4 to 2
|
||||
move 2 from 1 to 8
|
||||
move 1 from 2 to 9
|
||||
move 8 from 3 to 2
|
||||
move 2 from 9 to 7
|
||||
move 5 from 2 to 7
|
||||
move 7 from 7 to 2
|
||||
move 2 from 8 to 2
|
||||
move 3 from 1 to 9
|
||||
move 5 from 1 to 2
|
||||
move 3 from 9 to 8
|
||||
move 3 from 8 to 7
|
||||
move 5 from 2 to 5
|
||||
move 2 from 7 to 6
|
||||
move 12 from 8 to 9
|
||||
move 12 from 1 to 4
|
||||
move 9 from 9 to 3
|
||||
move 4 from 5 to 8
|
||||
move 12 from 3 to 8
|
||||
move 1 from 7 to 9
|
||||
move 3 from 9 to 2
|
||||
move 1 from 4 to 7
|
||||
move 3 from 1 to 7
|
||||
move 7 from 4 to 6
|
||||
move 3 from 6 to 2
|
||||
move 2 from 7 to 9
|
||||
move 18 from 8 to 1
|
||||
move 2 from 4 to 7
|
||||
move 1 from 2 to 8
|
||||
move 1 from 8 to 2
|
||||
move 10 from 2 to 3
|
||||
move 3 from 9 to 8
|
||||
move 2 from 6 to 7
|
||||
move 13 from 3 to 1
|
||||
move 2 from 8 to 9
|
||||
move 28 from 1 to 8
|
||||
move 1 from 5 to 2
|
||||
move 1 from 4 to 3
|
||||
move 4 from 7 to 6
|
||||
move 5 from 6 to 7
|
||||
move 7 from 2 to 6
|
||||
move 1 from 9 to 6
|
||||
move 2 from 2 to 4
|
||||
move 1 from 9 to 1
|
||||
move 4 from 1 to 2
|
||||
move 3 from 2 to 5
|
||||
move 3 from 4 to 9
|
||||
move 3 from 5 to 7
|
||||
move 1 from 1 to 4
|
||||
move 6 from 7 to 6
|
||||
move 1 from 2 to 6
|
||||
move 1 from 4 to 1
|
||||
move 1 from 1 to 8
|
||||
move 3 from 9 to 4
|
||||
move 18 from 6 to 3
|
||||
move 4 from 3 to 6
|
||||
move 1 from 7 to 9
|
||||
move 1 from 6 to 9
|
||||
move 2 from 3 to 6
|
||||
move 1 from 9 to 6
|
||||
move 1 from 9 to 2
|
||||
move 6 from 6 to 8
|
||||
move 3 from 4 to 7
|
||||
move 2 from 7 to 2
|
||||
move 35 from 8 to 7
|
||||
move 3 from 3 to 1
|
||||
move 26 from 7 to 2
|
||||
move 10 from 3 to 9
|
||||
move 6 from 9 to 4
|
||||
move 3 from 1 to 2
|
||||
move 1 from 4 to 3
|
||||
move 4 from 4 to 1
|
||||
move 1 from 3 to 6
|
||||
move 1 from 8 to 3
|
||||
move 1 from 6 to 2
|
||||
move 1 from 3 to 2
|
||||
move 13 from 7 to 3
|
||||
move 3 from 1 to 4
|
||||
move 4 from 3 to 1
|
||||
move 3 from 1 to 9
|
||||
move 2 from 1 to 9
|
||||
move 10 from 2 to 9
|
||||
move 19 from 2 to 9
|
||||
move 6 from 3 to 9
|
||||
move 2 from 3 to 4
|
||||
move 2 from 2 to 6
|
||||
move 17 from 9 to 8
|
||||
move 1 from 2 to 8
|
||||
move 2 from 9 to 3
|
||||
move 2 from 6 to 7
|
||||
move 8 from 9 to 3
|
||||
move 5 from 4 to 5
|
||||
move 14 from 9 to 4
|
||||
move 1 from 2 to 3
|
||||
move 1 from 7 to 2
|
||||
move 2 from 9 to 3
|
||||
move 1 from 2 to 7
|
||||
move 5 from 5 to 1
|
||||
move 1 from 2 to 1
|
||||
move 1 from 3 to 1
|
||||
move 1 from 9 to 7
|
||||
move 3 from 7 to 2
|
||||
move 3 from 3 to 7
|
||||
move 1 from 2 to 4
|
||||
move 1 from 3 to 8
|
||||
move 1 from 2 to 4
|
||||
move 4 from 3 to 4
|
||||
move 16 from 8 to 9
|
||||
move 3 from 1 to 4
|
||||
move 21 from 4 to 6
|
||||
move 1 from 7 to 2
|
||||
move 1 from 8 to 2
|
||||
move 1 from 1 to 3
|
||||
move 6 from 6 to 7
|
||||
move 3 from 1 to 9
|
||||
move 3 from 7 to 3
|
||||
move 1 from 4 to 6
|
||||
move 1 from 4 to 7
|
||||
move 2 from 2 to 6
|
||||
move 1 from 8 to 6
|
||||
move 13 from 6 to 7
|
||||
move 1 from 2 to 3
|
||||
move 15 from 9 to 8
|
||||
move 6 from 6 to 3
|
||||
move 13 from 8 to 3
|
||||
move 4 from 9 to 4
|
||||
move 5 from 4 to 8
|
||||
move 19 from 3 to 9
|
||||
move 3 from 3 to 1
|
||||
move 5 from 8 to 9
|
||||
move 17 from 9 to 7
|
||||
move 1 from 1 to 8
|
||||
move 4 from 9 to 6
|
||||
move 3 from 3 to 8
|
||||
move 1 from 1 to 2
|
||||
move 3 from 3 to 1
|
||||
move 36 from 7 to 6
|
||||
move 1 from 1 to 2
|
||||
move 7 from 8 to 2
|
||||
move 24 from 6 to 5
|
||||
move 2 from 6 to 7
|
||||
move 1 from 3 to 2
|
||||
move 4 from 6 to 8
|
||||
move 19 from 5 to 1
|
||||
move 8 from 6 to 4
|
||||
move 7 from 2 to 5
|
||||
move 3 from 2 to 8
|
||||
move 15 from 1 to 6
|
||||
move 2 from 9 to 5
|
||||
move 2 from 7 to 8
|
||||
move 3 from 4 to 1
|
||||
move 4 from 5 to 6
|
||||
move 1 from 9 to 7
|
||||
move 1 from 8 to 3
|
||||
move 3 from 6 to 1
|
||||
move 2 from 4 to 7
|
||||
move 13 from 1 to 8
|
||||
move 1 from 3 to 7
|
||||
move 1 from 4 to 5
|
||||
move 19 from 8 to 6
|
||||
move 1 from 7 to 3
|
||||
move 8 from 5 to 8
|
||||
move 1 from 6 to 8
|
||||
move 3 from 5 to 9
|
||||
move 1 from 6 to 4
|
||||
move 3 from 4 to 7
|
||||
move 1 from 3 to 9
|
||||
move 4 from 7 to 9
|
||||
move 20 from 6 to 3
|
||||
move 1 from 8 to 4
|
||||
move 2 from 9 to 4
|
||||
move 2 from 9 to 2
|
||||
move 2 from 9 to 3
|
||||
move 13 from 6 to 9
|
||||
move 9 from 9 to 8
|
||||
move 2 from 6 to 3
|
||||
move 8 from 8 to 2
|
||||
move 2 from 7 to 3
|
||||
move 5 from 9 to 3
|
||||
move 12 from 3 to 5
|
||||
move 1 from 4 to 7
|
||||
move 8 from 2 to 4
|
||||
move 8 from 4 to 7
|
||||
move 2 from 2 to 6
|
||||
move 2 from 8 to 9
|
||||
move 2 from 6 to 8
|
||||
move 2 from 9 to 6
|
||||
move 2 from 6 to 9
|
||||
move 2 from 4 to 8
|
||||
move 2 from 9 to 2
|
||||
move 6 from 3 to 1
|
||||
move 2 from 2 to 9
|
||||
move 3 from 9 to 3
|
||||
move 8 from 7 to 2
|
||||
move 6 from 1 to 2
|
||||
move 8 from 3 to 8
|
||||
move 1 from 7 to 3
|
||||
move 5 from 3 to 8
|
||||
move 6 from 2 to 7
|
||||
move 3 from 7 to 6
|
||||
move 2 from 7 to 9
|
||||
move 1 from 7 to 8
|
||||
move 8 from 5 to 7
|
||||
move 7 from 2 to 1
|
||||
move 7 from 1 to 6
|
||||
move 7 from 7 to 9
|
||||
move 1 from 7 to 6
|
||||
move 2 from 3 to 9
|
||||
move 2 from 8 to 5
|
||||
move 25 from 8 to 5
|
||||
move 5 from 5 to 1
|
||||
move 1 from 6 to 4
|
||||
move 17 from 5 to 4
|
||||
move 5 from 5 to 4
|
||||
move 23 from 4 to 7
|
||||
move 2 from 5 to 2
|
||||
move 4 from 6 to 3
|
||||
move 6 from 3 to 7
|
||||
move 1 from 5 to 2
|
||||
move 1 from 1 to 7
|
||||
move 2 from 2 to 8
|
||||
move 2 from 2 to 9
|
||||
move 1 from 5 to 7
|
||||
move 4 from 1 to 6
|
||||
move 2 from 8 to 3
|
||||
move 2 from 9 to 4
|
||||
move 1 from 4 to 8
|
||||
move 7 from 9 to 1
|
||||
move 2 from 3 to 5
|
||||
move 28 from 7 to 4
|
||||
move 4 from 6 to 2
|
||||
move 2 from 6 to 2
|
||||
move 3 from 7 to 4
|
||||
move 2 from 5 to 6
|
||||
move 4 from 2 to 6
|
||||
move 9 from 6 to 5
|
||||
move 4 from 1 to 7
|
||||
move 1 from 6 to 2
|
||||
move 3 from 2 to 3
|
||||
move 1 from 8 to 6
|
||||
move 1 from 7 to 4
|
||||
move 2 from 3 to 4
|
||||
move 1 from 7 to 4
|
||||
move 2 from 1 to 6
|
||||
move 1 from 7 to 9
|
||||
move 1 from 7 to 9
|
||||
move 1 from 6 to 2
|
||||
move 7 from 5 to 8
|
||||
move 1 from 3 to 9
|
||||
move 1 from 5 to 2
|
||||
move 7 from 8 to 7
|
||||
move 4 from 4 to 8
|
||||
move 2 from 8 to 4
|
||||
move 2 from 2 to 7
|
||||
move 1 from 1 to 7
|
||||
move 1 from 5 to 6
|
||||
move 32 from 4 to 7
|
||||
move 2 from 6 to 5
|
||||
move 2 from 8 to 2
|
||||
move 1 from 2 to 1
|
||||
move 2 from 5 to 4
|
||||
move 1 from 2 to 5
|
||||
move 1 from 1 to 4
|
||||
move 4 from 4 to 3
|
||||
move 1 from 6 to 4
|
||||
move 1 from 5 to 4
|
||||
move 5 from 9 to 1
|
||||
move 4 from 3 to 5
|
||||
move 3 from 1 to 6
|
||||
move 2 from 9 to 5
|
||||
move 2 from 1 to 3
|
||||
move 15 from 7 to 1
|
||||
move 5 from 5 to 3
|
||||
move 1 from 5 to 2
|
||||
move 3 from 4 to 5
|
||||
move 2 from 5 to 9
|
||||
move 3 from 3 to 6
|
||||
move 3 from 3 to 4
|
||||
move 1 from 3 to 8
|
||||
move 1 from 9 to 3
|
||||
move 2 from 4 to 9
|
||||
move 1 from 5 to 3
|
||||
move 2 from 9 to 6
|
||||
move 1 from 8 to 1
|
||||
move 1 from 3 to 2
|
||||
move 1 from 4 to 9
|
||||
move 2 from 9 to 3
|
||||
move 9 from 1 to 3
|
||||
move 5 from 3 to 4
|
||||
move 2 from 1 to 3
|
||||
move 4 from 1 to 5
|
||||
move 1 from 2 to 8
|
||||
move 3 from 4 to 9
|
||||
1
src/2022/day6/example.txt
Normal file
1
src/2022/day6/example.txt
Normal file
@@ -0,0 +1 @@
|
||||
mjqjpqmgbljsphdztnvjfqwrcgsmlb
|
||||
22
src/2022/day6/index.ts
Normal file
22
src/2022/day6/index.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import path from 'path';
|
||||
import { readFile, sum } from "../../utils";
|
||||
|
||||
let input = readFile(path.resolve(__dirname, 'input.txt'));
|
||||
|
||||
const find = (input, size) => {
|
||||
return input.split('')
|
||||
.reduce((a, b, c, d) => {
|
||||
a.push(b);
|
||||
if (a.length === size) {
|
||||
if (new Set(a).size === size) {
|
||||
d.splice(1);
|
||||
return c + 1;
|
||||
}
|
||||
a.shift();
|
||||
}
|
||||
return a;
|
||||
}, []);
|
||||
}
|
||||
|
||||
console.log("Part1:", find(input, 4));
|
||||
console.log("Part2:", find(input, 14));
|
||||
1
src/2022/day6/input.txt
Normal file
1
src/2022/day6/input.txt
Normal file
@@ -0,0 +1 @@
|
||||
bfdbbngnvnsvshhhrvrbrtbrrhqrqgrrmmdfmmqttptltntrntrnrcrdcrrctctdtwtrwwmlltcltcllmpprvvtbbmbvbsvvqwvvscswsqqgzqqppvzppnddjwddlrdlllmwllfccdfccswwrhhndhdhfdftdfdcdcllcjjbsbgssvlvrrhfrfjfpjffvnfvfwfzftztwwrhwrhwhwddpjjmhmgmsssstzszqzfqzzprpzpnndttphtpphvvcpcjppdtdwwqgwwwnhwnnvhvsvqqtrrbsscwssgwglgwlldjdzjjbsjbsbvvpbvppvfvqvbqbzzwtwbwpbbbcffdgggpnpfptpfphfhfthfthffzrrbzbcblbmmzmhhnvvqvlvwvzvtztgzznbbcqbccwhcwcnwnhndhhgcghhlthllplvppgngrgsswfsfnfjjswstsrtrhthhqzqggdtggzvvjljddqdzzrmrjmjcmjmrrwlldttrhhfjjgbglgjlldrllppnwpnwnndrddtdqdhhpccbgcgzzswzztgzzrwwzzmtztvvrtrgttvddwvwvmwvmmdjdrdtthqhgqhggldgdfdnnzjnjffmrrnprnpnssjrrbrjjrrzvrvhvllfvlvnlvvhlhrhzrzrsrswrssjvjdjfjwwjmjvjjthhnjnmnppsccmlcclfclcbllldwldwdlwddbddmnmrmgrmmtsszgssqjsqscswwzmwmbwwvqqbtbtwwpbbwdbdbhhqmqgqddflfmfnmffbtfbbsdsffspsjpsspzszccrsrstrtjrjppcrrpqqvttsbbjtbjjpbbccmzznvvzzvnvmmwmhmvmsstlssqtssvggtbgttgvtggfhggbcgcmcrmcmhhbttdlttfrfprrvttrtggcpplccqggcwwdjjjplprrbsrbbjsjbbfhbhphtttpffdgdgjddzldzlzplpnplljttdqqlmlllhzhjhccpwcwhwwbbqtqffjpfpfpjptplltbtzbbwwvggpcpprdprpbpvvgzgczzfffzcfzccjffrmrhmrhhchvhddsvswscsnnpfppdrdcrdrgdgmdgmgllhggjwggvqvmmvrrzpprhhqfhfvffvlvnlngnffbbtccfbfhfwhhhhwcwzwjjbffvrffqrrnsnwswrsrvrjvrvprpsptspttbztzfzlfzlflcflclqlplglmlqqvlvvhccmmddqvqzvvmlllvnlnhnfnwnlndnntrrhvvgjjnpnggfqgqdqqzvvclvclvlfvlvvlzlssqffmrfmfmjjczcmmmnttnfnmfnmmmhmggjgdjjqmjjvsslszlzrrpdpcpfcpfpnpssvtsvtvllbttzzljzzhrrnsnddjgdjgjljzzvhvddmdvvdtdmmpmqmnnwcwfwbfwwsvvbpvvgvnvcvdvtvrrcppwbppcqpccwqqzmqmmzczppwbbrzrjzzcrcvrrpttrjjcdjcjfcclscstthqhfqhffdcfdfqdqldddsswbblppdmdnnjvvhwvhvjhvjhjhlhcclrrcqcgcjgcjjtbtctbcbsccfwwltlrlplpfpjphplhhgtghhrppwhhrprwpwhhdqdpdwpwwtccvncvvvrpvphpssfpplcczttltgltldlmlqmmbsszdszznpprsprsprsppsbppjddjhhnrrfsrffmlmglgmlglccddpssdpsddhhfmfsfrfsfnnlggfrgghmgmrmprmprrnvrnnbqnqddhhfwfmfwfmfpfdfzdzppsbpsbpprfrvvwvtwtltvlttrhhgvhhjttmssdggnzzvmvcczmzbzwzttvtpvpcphcctmmhshjsjbssglsglgtltslscchhhsjjpljjdtdsdpppptlpprmppwdppglgmggnddztdzddzppswwmhfbpqzffjqgmsntwsnrwqrqwgpwgrbpbjwrhbcdcvqjnwslsnwhglcsjbwjhswjvzssfqgwbbdgbwfrblfmmlmsndhtlbwzfwsspqlncspqbgbnzshbwpvrmjqjzbcbzzdgssbtqdzffjphqjvrspfrjhpspbwcjwbfhqzsdnjwqjzjtjgnbrdbwqhzffphzppvlmsmppqcfjbjbdsnbwtvthwqcfrtfrwchnmqmhnwfcjtbwqwwvlnpmwlrvzwljrljzqstzglqwbzfdftzltlcbvmmfwcjqglvznztwnvzvftpndqmngqswppsnqhdbgthrddfbcfpflpndrhmcqwvnbfztsvnjjdwqgpmvdwvdftgbtvrwbnvvrwsdfzhwbwdhlpzbcqdzhbfqtpjqcmrpvcsrmcwvgghqrclfzpfgnppzmhvdhvdfrcrnjbdcwbftcqjhhfdsnfnwjzjllzzqftzsjrqnsbpjdcswhhmwwdzmvmqcjtqnczjcvzmmqwzjhjpcczgpbmcvbwmpmvnghlrgcmrrdnmjvmvnhtpfpgwgmdfzvlbclzjzwdqqcvfhhgfzdhzpdvfmwjlzzrpdgzmttmvvcplbwfzqftcgcwcgcpgwvnmlqsplpqwfnhwvqtlwcspqdzshsqnlcpqhpcpbwdhdjsmvtbqdwbcrscqfjcrcjhbjbpzbshpbmlcthmbjfwhzfphgbfqfnfztptzvdnwrpslmdtpmzmpbsszqshwdghrbtvhwzhcmpcgfqggpgzwmhhdrlhlvnpzvwwhzqvgvhrzngttcnqgjjhnblncnqnjzlwnmwnrtvwjtnrbhthncwmzwqdbdgtwrncljddnbhmphgjzfrrgmmcwfwjwjlcrhvcdtvsrvsfhmlgmzsgjchhrfmqslmdgtdtrlbhdffddvbsdbdwlwdcmcmmpvzpdtmbthjdzlpwftptpfsggmhjfjwvbwljsfhfwtbfwmczwhbmhvzllqtcqqfbrcdqqsrcpfmnswnfzfqghcmcbqwgvzqpwvvmbpddlhgjgzvgmpljznrhqphwcztqzpnhzqdgpwwclmsgpwnwtvtsjsdmcnvmjbqglttrhbzqdbgwnbsqzmsmztndrtmlpszhzgjbbftbsdwwdrlftrbbnrsqshfhdpdrwmztcqzdjlnthnjhppwntmbqdgzpmfmfnccblsdwljqhjfgtlgvpzpjbsndmwzfwrbmdhpnmbchqlwqtbhhhqqbsfnvscjwrzvjdtvbsqwzvfhwbbjgqpzcwqjdrlfmggzmhbcrhtbqdjntbtqdvmvpqflmccfpnbmnmtqbdflsgczpbsqpfphlzqgvwbjlmsgshrhpcljzdvwvdvlqqwchtjmjgtqjhgwtnddmhphwhvwhtrhfbjjjzfgrcqngnnddctzdzlqjlbdwmjqzccwrvctrzgtzqsswggbqdnplclhtdslcvzhppcjjslnshtwjnbrwdprqhdtfqmqpgfgnqtdnnhrnzfrsqhlftpdslgmmvqhvpjqjwpwgtnmgrbhwntdjftfwtjzjtprctbtsjmqmpcbbtrjvsgqgsfjprqmsmdztbhnbgzldqfzgwqwnnccgcfclctrwqmqpgvfglgsmmpjszqnphnzcnvswpsfsrmnsnlqnpmvfdvdtfgzrdmbftdrrrbfsvzfgmnffvjpcpnndrwhtjjrrvnztlfhcvfqjgfrhtbnhmwnrmwdhzmmtvjmsqmghtbtfjwdnvdcqtqjrfhrwscjftmbgjmcsrbpdpttlmvfmnfjhnptqvggnshzqnlqqdpqqsqssppbwpblhgfrwrblpzwvqphpsgfmbpqtqqpjpgnbblzstgcjhqntgpbfwlzzctqbnbvpgwsdsdldqzhvznqcsrrghpwllshqpdlqnqgzfwrnhwsvhftzplspcbqmclplprlthvwjhdndrjblqdgwvgjlbmblbmcnbzwzdlnpnhhppvrtngvqqwsttgwlvtcqmtrvpbnvcnfqdtqrsrsmhclmtgbdwwdvhwgfcqpmprcpdhqwftcchbwvstcdqrlwtgbcfqfgzprgvpbbzlqfzbqtcrlzscnqpqwtgzbbbdvsvmhggdr
|
||||
23
src/2022/day7/example.txt
Normal file
23
src/2022/day7/example.txt
Normal file
@@ -0,0 +1,23 @@
|
||||
$ cd /
|
||||
$ ls
|
||||
dir a
|
||||
14848514 b.txt
|
||||
8504156 c.dat
|
||||
dir d
|
||||
$ cd a
|
||||
$ ls
|
||||
dir e
|
||||
29116 f
|
||||
2557 g
|
||||
62596 h.lst
|
||||
$ cd e
|
||||
$ ls
|
||||
584 i
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd d
|
||||
$ ls
|
||||
4060174 j
|
||||
8033020 d.log
|
||||
5626152 d.ext
|
||||
7214296 k
|
||||
149
src/2022/day7/index.ts
Normal file
149
src/2022/day7/index.ts
Normal file
@@ -0,0 +1,149 @@
|
||||
import path from 'path';
|
||||
import { readFile, sum } from "../../utils";
|
||||
|
||||
let input = readFile(path.resolve(__dirname, 'input.txt'));
|
||||
|
||||
class ElFile {
|
||||
|
||||
public name: string;
|
||||
public size: number;
|
||||
|
||||
constructor(name: string, size: number) {
|
||||
this.name = name;
|
||||
this.size = size;
|
||||
}
|
||||
}
|
||||
|
||||
class NodElf {
|
||||
|
||||
public path: string;
|
||||
public parent?: NodElf;
|
||||
public children: NodElf[] = [];
|
||||
public files: ElFile[] = [];
|
||||
|
||||
constructor(path: string, parent: NodElf) {
|
||||
this.path = path;
|
||||
this.parent = parent;
|
||||
}
|
||||
|
||||
public goTo(arg: string): NodElf | undefined {
|
||||
|
||||
if (arg === "..") {
|
||||
if (this.parent)
|
||||
return this.parent;
|
||||
}
|
||||
|
||||
if (!(arg in this.getFolders())) {
|
||||
const newNode = new NodElf(arg, this);
|
||||
this.children.push(newNode)
|
||||
return newNode;
|
||||
}
|
||||
}
|
||||
|
||||
public addFolder(path: string) {
|
||||
if (!(path in this.getFolders())) {
|
||||
const newNode = new NodElf(path, this);
|
||||
this.children.push(newNode)
|
||||
}
|
||||
}
|
||||
|
||||
public addFile(size: string, name: string) {
|
||||
if (!(name in this.getFiles())) {
|
||||
const newFile = new ElFile(name, Number(size));
|
||||
this.files.push(newFile);
|
||||
}
|
||||
}
|
||||
|
||||
public getFiles() {
|
||||
return this.files.map(file => file.name);
|
||||
}
|
||||
|
||||
public getFolders() {
|
||||
return this.children.map(node => node.path);
|
||||
}
|
||||
|
||||
public getAllFolders() {
|
||||
return this.children.concat(this.children.flatMap(child => child.getAllFolders()));
|
||||
}
|
||||
|
||||
|
||||
public getSize(): number {
|
||||
return this.children.reduce((a, b) => a + b.getSize(), 0) + this.files.reduce((a, b) => a + b.size, 0);
|
||||
}
|
||||
}
|
||||
|
||||
class ExtendedLeetFilesystem {
|
||||
|
||||
public root: NodElf;
|
||||
public currentDir: NodElf | undefined;
|
||||
|
||||
constructor() {
|
||||
this.root = new NodElf('/', null);
|
||||
this.currentDir = this.root;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public cmd(command: string, arg: string) {
|
||||
if (command === "cd") {
|
||||
if (arg === "/" && this.currentDir?.path === "/") return;
|
||||
this.currentDir = this.currentDir?.goTo(arg);
|
||||
}
|
||||
else if (command === "ls") {
|
||||
//console.log("Print content of", this.currentDir?.path);
|
||||
}
|
||||
}
|
||||
|
||||
public output(type: string, arg: string) {
|
||||
if (type === "dir") {
|
||||
this.currentDir?.addFolder(arg)
|
||||
}
|
||||
else {
|
||||
this.currentDir?.addFile(type, arg);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public getDirectory(path: string) {
|
||||
const dirs = path.split("/");
|
||||
return dirs.reduce((a, b, c) => a, this.currentDir);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
const inputLines = input.split("\n");
|
||||
let currentFolder = [];
|
||||
|
||||
const ELF: ExtendedLeetFilesystem = new ExtendedLeetFilesystem();
|
||||
|
||||
for (let idx = 0; idx < inputLines.length; idx++) {
|
||||
|
||||
const line = inputLines[idx];
|
||||
|
||||
if (line.startsWith("$")) {
|
||||
const [dollah, cmd, path] = line.split(" ");
|
||||
ELF.cmd(cmd, path);
|
||||
}
|
||||
|
||||
else {
|
||||
const [type, arg] = line.split(" ");
|
||||
ELF.output(type, arg);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const maxSize = 100000;
|
||||
const total = ELF.root.getAllFolders().filter(node => node.getSize() < maxSize).map(node => node.getSize()).reduce(sum);
|
||||
console.log("Part 1", total)
|
||||
|
||||
|
||||
const sizeAvailable = 70000000;
|
||||
const spaceNeeded = 30000000;
|
||||
const currentSize = ELF.root.getSize();
|
||||
const toDelete = spaceNeeded - (sizeAvailable - currentSize);
|
||||
|
||||
const total2 = ELF.root.getAllFolders().sort((a, b) => a.getSize() - b.getSize()).filter(node => node.getSize() > toDelete)[0].getSize();
|
||||
|
||||
console.log("Part2:", total2);
|
||||
|
||||
1105
src/2022/day7/input.txt
Normal file
1105
src/2022/day7/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
5
src/2022/day8/example.txt
Normal file
5
src/2022/day8/example.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
30373
|
||||
25512
|
||||
65332
|
||||
33549
|
||||
35390
|
||||
109
src/2022/day8/index.ts
Normal file
109
src/2022/day8/index.ts
Normal file
@@ -0,0 +1,109 @@
|
||||
import path from 'path';
|
||||
import { readFile, sum } from "../../utils";
|
||||
|
||||
let input = readFile(path.resolve(__dirname, 'input.txt'));
|
||||
|
||||
let grid: any[] = [];
|
||||
|
||||
input.split("\n").forEach(element => {
|
||||
const arr = element.split("");
|
||||
grid.push(arr);
|
||||
});
|
||||
|
||||
const checkVisible = (x: any, y: any) => {
|
||||
// Check up
|
||||
const treeVal = grid[y][x];
|
||||
|
||||
let stillVisible = true;
|
||||
for (let it = y - 1; it >= 0; it--) {
|
||||
if (grid[it][x] >= treeVal) stillVisible = false;
|
||||
}
|
||||
if (stillVisible) return true;
|
||||
|
||||
stillVisible = true;
|
||||
for (let it = y + 1; it < grid.length; it++) {
|
||||
if (grid[it][x] >= treeVal) stillVisible = false;
|
||||
}
|
||||
if (stillVisible) return true;
|
||||
|
||||
stillVisible = true;
|
||||
for (let it = x - 1; it >= 0; it--) {
|
||||
if (grid[y][it] >= treeVal) stillVisible = false;
|
||||
}
|
||||
if (stillVisible) return true;
|
||||
|
||||
stillVisible = true;
|
||||
for (let it = x + 1; it < grid.length; it++) {
|
||||
if (grid[y][it] >= treeVal) stillVisible = false;
|
||||
}
|
||||
if (stillVisible) return true;
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
|
||||
let counter = 0;
|
||||
for (let x = 1; x < grid.length - 1; x++) {
|
||||
for (let y = 1; y < grid.length - 1; y++) {
|
||||
if (checkVisible(x, y)) counter++;
|
||||
}
|
||||
}
|
||||
|
||||
const edgeTrees = grid.length * 4 - 4;
|
||||
|
||||
console.log("Part 1:", counter + edgeTrees);
|
||||
|
||||
const getScenicScore = (x: any, y: any): number => {
|
||||
// Check up
|
||||
|
||||
|
||||
const treeVal = grid[y][x];
|
||||
let counter = 0;
|
||||
let score = 0;
|
||||
|
||||
for (let it = y - 1; it >= 0; it--) {
|
||||
counter++;
|
||||
if (grid[it][x] >= treeVal) break;
|
||||
}
|
||||
score = counter;
|
||||
|
||||
|
||||
counter = 0;
|
||||
for (let it = y + 1; it < grid.length; it++) {
|
||||
counter++;
|
||||
if (grid[it][x] >= treeVal) break;
|
||||
}
|
||||
|
||||
score = score * counter;
|
||||
|
||||
counter = 0;
|
||||
for (let it = x - 1; it >= 0; it--) {
|
||||
counter++;
|
||||
if (grid[y][it] >= treeVal) break;
|
||||
}
|
||||
|
||||
score = score * counter;
|
||||
|
||||
counter = 0;
|
||||
|
||||
for (let it = x + 1; it < grid.length; it++) {
|
||||
counter++;
|
||||
if (grid[y][it] >= treeVal) break;
|
||||
}
|
||||
|
||||
return score * counter;
|
||||
|
||||
// counter = 0;
|
||||
// return counter;
|
||||
|
||||
}
|
||||
|
||||
let scores: number[] = [];
|
||||
for (let x = 1; x < grid.length - 1; x++) {
|
||||
for (let y = 1; y < grid.length - 1; y++) {
|
||||
scores.push(getScenicScore(x,y));
|
||||
}
|
||||
}
|
||||
|
||||
console.log("Part 2:" , Math.max(...scores));
|
||||
99
src/2022/day8/input.txt
Normal file
99
src/2022/day8/input.txt
Normal file
@@ -0,0 +1,99 @@
|
||||
213301311230020143114320444110403320013225525311631030063110421431345121304222223004301412232100001
|
||||
032203111100043323010213335301511304130605406233153314443635022154110215552041255340234040130323222
|
||||
211033104233224304235521203100252423434120553365402362266533500152442121543412024410024400242202302
|
||||
013233443223404100042450150455321226633161540105245332600255253210530355343333525022032244210410030
|
||||
100023412423313250410335224414340304541343205513226532163144253316101245551432014201003142341223120
|
||||
232241013411335302431133421201615210501105064501562020244216516152310063135512221455045300342211403
|
||||
001211403144420455554423216332215200446124050665565420055553546105000034160513122231050524220140011
|
||||
010222034210203122402014343566262222246103065613373733360061263604223104106135234020024543242111403
|
||||
133113440330510405504554625242222200403366266153277146434533626152126510506334524322514123130210430
|
||||
101113041432001410142511513526503002532162171436233673475525363642630611162522443352502205024124331
|
||||
324312213553041030426555020660523457632523764416232512767555566551645346253661665442120340412302333
|
||||
222123425201320323442604100535316531114411567157656317576577367225171531643603563142005225003430304
|
||||
230404233442530203464653423224331773327325127722375144767252343327447164151244036263205440245102240
|
||||
020311403313133205655466214461271263366243355275525631512333123546621214666605403224540121240310404
|
||||
223432305440325556610201021457211262246351424434658664512646355413752541213342520233125105551331330
|
||||
410041131121534131115352632731175264753542438584525556827443273227227341353644032545140104543024000
|
||||
423453033330221431012636112324171513474458778337333686836267386757554467754342542115255232403454502
|
||||
141503311314266450662537113455732217424265537246342583573854773454123656425412332165232141011402443
|
||||
234300432213662423462523257572767147464533826775238485872738873855313755143164616151012552443215022
|
||||
033241031332110563643465311621477762732537565784247833454662525727847541531227547400151244235203533
|
||||
240224003236231611317717416272324253823854672343372244362284832853474756317737336366405432515551141
|
||||
044253414432535641343531616777683583443747683557473845555627346482283442342143325272142654451141515
|
||||
414053450103324521235112631345676573684558268948763749867453426652857573524661772775625535603534203
|
||||
452331543214300655576765671548836233443573348365895488958888986552454663627672751663623063544153145
|
||||
213123262132446231133475424568643584667349958744556395357354533357757384556355745247423355145351432
|
||||
342221165500622631522633663654256837955886839433536678696786657748837377774671514433313266661623225
|
||||
130525523663122464775524878454547596977765643878496844435439637547575786557583612611151265003051021
|
||||
052340513053426716457138866685633365633897943973977354954887846375952874745888233531473341566254321
|
||||
551302462051112655343688535254486759649794957694399376794599363586956664557346654412445441323166111
|
||||
423314110434112256221674555238787433834639693845964995577597377494776955386853327646756442555444510
|
||||
011552365334113123648585377225387834796343948497694499984846743648856748248673875362436356643131030
|
||||
020256210453324157237867264233786435595376465578894967846665837389745665523842772735511735230401305
|
||||
414103611044274157467628724497537843895695848765959754656769555753737934946468683576713214360041123
|
||||
433526245602544722152833257988587439889445445556677697744745565449795769495384242545477273223656031
|
||||
535042251546455362245227649985889898476674985559449558958898867548978656953754247384375772356045111
|
||||
323611233267761557486537664663454997974544898976574687679659946846478948476457434665442317312022000
|
||||
316230521014145628676243456554785557548446999847699997896955585649999577677524437423612355506115351
|
||||
233431152247465456337854474647793964448444896895598667778778977886586858366824426252253276231246145
|
||||
404014103521614562682335866979974948446875556785969767656758585669745354988763786574741512533625562
|
||||
556325261143135338658723684954548748574497796665868666555699769757857835743973646256523654252240304
|
||||
266422162456222134742357585545497865656898785565975797777687675798668987868793755627527272716412640
|
||||
455002563563223122565674686979694669768589897756676776589979994889496595734434837783346346143450216
|
||||
423623414476221783674588469588594648549897978796997876765586667888788799455377766468736364172434104
|
||||
461015352326313587764337768946558646676685575698789678659997955774574676447688826876753362163336656
|
||||
454301143535414652353245365369994964967576769566899779689689997774557795374734563262787562775060012
|
||||
653222122731245568566556776985848547968556787679686669879569789644864455634454383364432375535243521
|
||||
342316353424453765457789959854867655565788786777767789769587758955585444849988572535856114662250155
|
||||
250055446366322362645884695995797555897869878978866789879755795875895966677947756776764266155654244
|
||||
355444312633526744883699577599657855885557866766789996876599887759779647979599732827875247133603306
|
||||
355162377751474644575435897745996464769988698987886888687666856555545976965644336524766776743736625
|
||||
254133626515278463466897589667596746698997878997878697797768557598696668363844637544382211555636416
|
||||
360253472354274732737486847668779778565699779896887679689978676579598846458534776876223325777613344
|
||||
366252652724126345554794996866795676999857566667778779778577866995589777749549487475787272211122413
|
||||
431342467147246836362775364375899585598957998976787989869955888769495445683934936635824416757641010
|
||||
146634042466136236774369894774864768596766587699767886867877869796986964585967784682527733236415223
|
||||
156304456734165226274783349494798495455769775689668799688775958559896465983366587486585214546510053
|
||||
605206622655775234243663487486755585458887997787688876799655859888594564838739982853787622517046650
|
||||
423630024631261432424833633564887777468876679966768898695978957564669463675476746456267163626043120
|
||||
416652052662467458722777939356947478968767765657999676685879795995878796976469668655854466754261205
|
||||
220024367637577658627779495636364487645958666565757789856885784694646544987687453532241513327314431
|
||||
001205127227723722658235495649657985496688668778766957998998798794864455548548428355817465523414166
|
||||
025161664544242365866263435484535744784969979677987979756856584797657359539943238646534427543545433
|
||||
244045631473162278554572386595375669975856555597887558858964647474989998785563783734436666571035624
|
||||
353335045651153142532442577843953876787689468686959685568475794765699446555738548335432232450554121
|
||||
534351561042516364445286348344476866564776585989956875745847495865559949864377745388672675423056350
|
||||
540405145026441333666346536966747774764948686678756744954767654888755588373534364785112116636432366
|
||||
310352124627123114353328539488485988645766859746585887776555674793469866749353577236524625202164415
|
||||
302556262406343647252785226737766869695447799556645996986594999884557567783867558422423434634241154
|
||||
211616662653431774753648337273939739669445597598598567499698999634858586533835878556437361125533615
|
||||
213322310145376773757677875437498844399795974564596995697555949834733955347632738712147720025645345
|
||||
541321441544454414357337667684975575996485879944954889455796373396388797572654885262161174164114144
|
||||
210116521136412425163348474242489536463548693688568577695359465578777582266853876663474766131111432
|
||||
440444421253572763622188785355529648358638647573673687439788966944953762338575361334246603164356300
|
||||
054351113510556462163317846522547487438935688785489478376663949834482363723855432634571000412534200
|
||||
415304004006217366116355647365825399757479337377973788354755373575483332857751272645472164332645502
|
||||
525435240504040365515335242682485535453593777959944374675953567553247848654865615214462532062624325
|
||||
421513461342233446252413525637885564683877795686776666737637754842856378347452214626360461550624343
|
||||
445211110022304542377331711668252868465579847656559543637984976636772273847434447777513040455425001
|
||||
302124154303411402267242643588322823363568229589888949467266487378624266732545514654524630362511225
|
||||
434012041224431221666125342437865823243772555453745443857363576672867874747661743241420321212130504
|
||||
100134115561650365223124662615754286283234445334825852647834765375247667746624712416412652603245504
|
||||
132253131224342151537452754232162483446373772738888327822756583445567161173342212362212631430242244
|
||||
141002023046411154261327625245617625735662275264772823842687844832822441456725161115444254441235253
|
||||
200553032020156206063203436454516443664846483233468486433667666766457415762323462062450463344313222
|
||||
201010451225251563362461722113361342618764328454374782643642448326624276154240645532300534152314133
|
||||
444032143444456452225426623113762543374213652282765487482433537313361316346564006642411354445335302
|
||||
020342143213005041512255604774164472633331333366228437463563712421513134547351014225565411402514242
|
||||
422332412253335446146523426227763642635272527343272516342561634646544572211313465325345004130011204
|
||||
440123035240040516464102063022655255262623463165725261752452217412716246215333530160420454541132140
|
||||
143323423014024055541430440445462316717323336261624421453346176657765065655202543223211535243321002
|
||||
133332221053010114200220465260340352674371352121611744231126156721603415356035634351251443041000331
|
||||
404032402110401515330522443316116601151652142553741456176754127651434134661511225255414401412224430
|
||||
300223104202155300140023253011351612643321427612315624461765340336455620510150244014335414004342223
|
||||
230303331103324102513523351221602260544055166522131313540411061216126232512021403023242041242141113
|
||||
101421341122145002224050506061436405231312566403515452555542525100113200314454334451233442312303301
|
||||
303031334122345315210233432302103062261562324500250254554303502015306535302122202415335332113422223
|
||||
323333442324333342200411433124165341334121455446602633255250161540440000210002155250512324214002123
|
||||
020000401400224230303002512321356354406540161122666225140252401423502424351314403352020313231212111
|
||||
000130010133444334124411122525303126205322331530363021562050544410330230535525023331433124342133030
|
||||
8
src/2022/day9/example.txt
Normal file
8
src/2022/day9/example.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
R 4
|
||||
U 4
|
||||
L 3
|
||||
D 1
|
||||
R 4
|
||||
D 1
|
||||
L 5
|
||||
R 2
|
||||
70
src/2022/day9/index.ts
Normal file
70
src/2022/day9/index.ts
Normal file
@@ -0,0 +1,70 @@
|
||||
import path from 'path';
|
||||
import { readFile, sum } from "../../utils";
|
||||
|
||||
let input = readFile(path.resolve(__dirname, 'example.txt'));
|
||||
|
||||
let THistory: { x: number, y: number }[] = [];
|
||||
|
||||
let pos = {
|
||||
H: { x: 0, y: 0 },
|
||||
T: { x: 0, y: 0 }
|
||||
}
|
||||
|
||||
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 }
|
||||
switch (dir) {
|
||||
case "U":
|
||||
pos.H = { x: pos.H.x, y: pos.H.y + 1 };
|
||||
break;
|
||||
case "D":
|
||||
pos.H = { x: pos.H.x, y: pos.H.y - 1 };
|
||||
break;
|
||||
case "L":
|
||||
pos.H = { x: pos.H.x - 1, y: pos.H.y };
|
||||
break;
|
||||
case "R":
|
||||
pos.H = { x: pos.H.x + 1, y: pos.H.y };
|
||||
break;
|
||||
}
|
||||
|
||||
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 };
|
||||
|
||||
THistory.push(pos.T);
|
||||
}
|
||||
});
|
||||
|
||||
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);
|
||||
});
|
||||
2000
src/2022/day9/input.txt
Normal file
2000
src/2022/day9/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,34 +0,0 @@
|
||||
import path from 'path';
|
||||
import {readFile} from "../utils";
|
||||
|
||||
let input = readFile(path.resolve(__dirname, 'input.txt')).map((x: any) => x.split(' '));
|
||||
|
||||
let forward = 0;
|
||||
let depth = 0;
|
||||
|
||||
const add = (command: any) => {
|
||||
if (command[0] === 'forward') forward += Number(command[1]);
|
||||
else if (command[0] === 'down') depth += Number(command[1]);
|
||||
else depth -= Number(command[1]);
|
||||
}
|
||||
|
||||
input.map(add)
|
||||
|
||||
console.log("Part 1", forward * depth)
|
||||
|
||||
forward = 0;
|
||||
depth = 0;
|
||||
let aim = 0;
|
||||
|
||||
const execute = (command: any) => {
|
||||
if (command[0] === 'down') aim += Number(command[1]);
|
||||
else if (command[0] === 'up') aim -= Number(command[1]);
|
||||
else {
|
||||
forward += Number(command[1])
|
||||
depth += Number(command[1]) * aim
|
||||
}
|
||||
}
|
||||
|
||||
input.map(execute)
|
||||
|
||||
console.log("Part 2", forward * depth)
|
||||
@@ -1,5 +1,14 @@
|
||||
import * as fs from 'fs'
|
||||
|
||||
export const readFile = (file: string): any => {
|
||||
return fs.readFileSync(file, {encoding: "utf-8"}).split("\r\n");
|
||||
return fs.readFileSync(file, {encoding: "utf-8"});
|
||||
}
|
||||
|
||||
export const print = (array: any[]) => {
|
||||
array.forEach(x => console.log(x));
|
||||
}
|
||||
|
||||
export const sum = (n1, n2) => {
|
||||
return n1 + n2;
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
|
||||
/* Type Checking */
|
||||
"strict": true, /* Enable all strict type-checking options. */
|
||||
"noImplicitAny": false, /* Enable error reporting for expressions and declarations with an implied `any` type.. */
|
||||
"noImplicitAny": false, /* Enable error reporting for expressions and declarations with an implied `any` type.. */
|
||||
// "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */
|
||||
// "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
|
||||
// "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */
|
||||
@@ -97,5 +97,8 @@
|
||||
/* Completeness */
|
||||
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
|
||||
"skipLibCheck": true /* Skip type checking all .d.ts files. */
|
||||
},
|
||||
"ts-node": {
|
||||
"swc": true
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user