Compare commits

..

No commits in common. "bef73c0cb5f57e6bc74c99e93995481312d5100b" and "d23ce26d0ebb34f15fcc196d442e6412f72ed816" have entirely different histories.

6 changed files with 39 additions and 98 deletions

1
.gitignore vendored
View file

@ -1 +0,0 @@
**/input.txt

9
aoc
View file

@ -1,9 +0,0 @@
#!/usr/bin/env zsh
setopt extendedglob
cd "day$1"
# Handle deno days
if [[ -n *.ts(#qN) ]]; then
deno eval --ext=ts "await import('./part$2.ts').then(m => m.solve()).then(s => console.log('The solution is', s))"
fi

View file

@ -1,18 +1,16 @@
export async function solve() { const input = await Deno.readTextFile("./input.txt").then(
return await Deno.readTextFile("./input.txt").then( (f) =>
(f) => f.split("\n").reduce<[number[], number[]]>(
f.split("\n").reduce<[number[], number[]]>( (
( acc,
acc, cur,
cur, ) => [[...acc[0], +cur.split(" ")[0]], [
) => [ ...acc[1],
[...acc[0], +cur.split(" ")[0]], +cur.split(" ")[1],
[...acc[1], +cur.split(" ")[1]], ]],
], [[], []],
[[], []], ),
), ).then(([first, second]) => [first.toSorted(), second.toSorted()]).then((
).then(([first, second]) => [first.toSorted(), second.toSorted()]).then( [first, second],
([first, second]) => ) => first.reduce((acc, cur, i) => acc + Math.abs(cur - second[i]), 0));
first.reduce((acc, cur, i) => acc + Math.abs(cur - second[i]), 0), console.log("Answer = " + input);
);
}

View file

@ -1,25 +1,24 @@
export async function solve() { const input = await Deno.readTextFile("./input.txt").then(
return await Deno.readTextFile("./input.txt").then( (f) =>
(f) => f.split("\n").reduce<[number[], number[]]>(
f.split("\n").reduce<[number[], number[]]>( (
( acc,
acc, cur,
cur, ) => [[...acc[0], +cur.split(" ")[0]], [
) => [ ...acc[1],
[...acc[0], +cur.split(" ")[0]], +cur.split(" ")[1],
[...acc[1], +cur.split(" ")[1]], ]],
], [[], []],
[[], []], ),
), ).then(([first, second]) => [
).then(([first, second]) => [ first,
first, second.reduce((acc, cur) => {
second.reduce((acc, cur) => { if (acc[cur] !== undefined) acc[cur]++;
if (acc[cur] !== undefined) acc[cur]++; else acc[cur] = 1;
else acc[cur] = 1;
return acc; return acc;
}, {} as Record<number, number>), }, {} as Record<number, number>),
] as const).then(([first, map]) => ]).then(([first, map]) =>
first.reduce((acc, cur) => acc + ((map[cur] ?? 0) * cur), 0) first.reduce((acc, cur) => acc + ((map[cur] ?? 0) * cur), 0)
); );
} console.log("Answer = " + input);

View file

@ -1,17 +0,0 @@
export async function solve() {
return await Deno.readTextFile("./input.txt").then((f) =>
f.split("\n").filter((l) => {
const report = l.split(" ").map((s) => +s);
const increasing = report[0] < report[1];
let last = report[0];
for (const number of report.slice(1)) {
if (number > last && !increasing) return false;
if (number < last && increasing) return false;
if (Math.abs(number - last) < 1 || Math.abs(number - last) > 3) return false;
last = number;
}
return true;
}).reduce(acc => acc + 1, 0)
);
}

View file

@ -1,29 +0,0 @@
export async function solve() {
return await Deno.readTextFile("./input.txt").then((f) =>
f.split("\n").filter((l) => {
const report = l.split(" ").map((s) => +s);
for (let i = 0; i < report.length; i++) {
const sliced = [
...report.slice(0, i),
...report.slice(i + 1, report.length),
];
const increasing = sliced[0] < sliced[1];
let last = sliced[0];
let failed = false;
for (const number of sliced.slice(1)) {
if (number > last && !increasing) failed = true;
if (number < last && increasing) failed = true;
if (
Math.abs(number - last) < 1 ||
Math.abs(number - last) > 3
) failed = true;
last = number;
}
if (failed) continue;
else return true;
}
return false;
}).reduce((acc) => acc + 1, 0)
);
}