day 9 part one finally done

This commit is contained in:
2024-12-14 14:03:47 -05:00
parent c6b5605022
commit 2a8a0bb280

View File

@@ -1,7 +1,7 @@
import fs from "node:fs";
import { printTime, now, toNum } from "../util";
const test = true;
const test = false;
const data = fs.readFileSync(
test ? "./inputs/testinput" : "./inputs/input",
@@ -9,36 +9,42 @@ const data = fs.readFileSync(
);
let timer = now.instant();
let sparceArray = data
.split("\n")
.slice(0, -1)[0]
.split("")
.map(toNum)
.reduce((disk, curr, index) => {
const fill = index % 2 === 0 ? index / 2 : -1; // -1 represents free space
return [...disk, ...Array.from({ length: curr }, () => fill)];
}, [] as Array<number>);
let rightCursor = sparceArray.length - 1;
let leftCursor = 0;
while (leftCursor < rightCursor) {
if (sparceArray[leftCursor] === -1) {
while (sparceArray[rightCursor] === -1) {
rightCursor--;
}
if (leftCursor > rightCursor) {
// don't let them overrun each other
break;
}
sparceArray[leftCursor] = sparceArray[rightCursor];
sparceArray[rightCursor] = -1;
}
leftCursor++;
}
console.log(
"part one:",
data
.split("\n")
.slice(0, -1)[0]
.split("")
.map(toNum)
.reduce((disk, curr, index) => {
const fill = index % 2 === 0 ? index / 2 : -1; // -1 represents free space
return [...disk, ...Array.from({ length: curr }, () => fill)];
}, [] as Array<number>)
.reduce((disk, current, i, a) => {
console.log(disk, current, i, a);
if (current === -1) {
while (true) {
let tail = a.pop();
if (tail === -1 || tail === undefined) {
continue;
} else {
return [...disk, tail];
}
}
} else {
return [...disk, current];
}
}, [] as Array<number>)
.reduce((checksum, curr, i) => {
console.log(curr, i);
sparceArray.reduce((checksum, curr, i) => {
if (curr !== -1) {
return checksum + curr * i;
}, 0),
}
return checksum;
}, 0),
printTime(now.instant().since(timer))
);