This commit is contained in:
Yanick Champoux 2022-12-08 16:27:32 -05:00
parent e38aec3c69
commit 03a0bc7836
2 changed files with 13 additions and 19 deletions

View File

@ -73,10 +73,14 @@ export function generateVisibilityGrid(forest) {
export const puzzleInput = readInput(import.meta.url, "input"); export const puzzleInput = readInput(import.meta.url, "input");
export const sample = readInput(import.meta.url, "sample"); export const sample = readInput(import.meta.url, "sample");
export function printMap(forest) { export const passthru = (func) => (arg) => {
forest.forEach((line) => console.log(line.join(" "))); func(arg);
return forest; return arg;
} };
export const printMap = passthru((forest) =>
forest.forEach((line) => console.log(line.join(" ")))
);
export default R.createPipe( export default R.createPipe(
generateVisibilityGrid, generateVisibilityGrid,

View File

@ -1,8 +1,7 @@
import * as R from "remeda"; import * as R from "remeda";
import memo from "memoizerific";
import Victor from "@a-robu/victor"; import Victor from "@a-robu/victor";
import { printMap, outOfBound } from "./part1"; import { outOfBound } from "./part1";
const V = (...args) => new Victor(...args); const V = (...args) => new Victor(...args);
@ -21,8 +20,8 @@ function visibility(forest, x, y, dx, dy) {
} }
} }
const visibilityAround = (forest) => (x, y) => { const visibilityAround = (forest) => (x, y) =>
return [ [
[0, 1], [0, 1],
[0, -1], [0, -1],
[1, 0], [1, 0],
@ -30,20 +29,11 @@ const visibilityAround = (forest) => (x, y) => {
] ]
.map((d) => visibility(forest, x, y, ...d)) .map((d) => visibility(forest, x, y, ...d))
.reduce((a, b) => a * b); .reduce((a, b) => a * b);
};
export default R.createPipe( export default R.createPipe(
(forest) => { (forest) => {
const viz = Array(forest.length) const va = visibilityAround(forest);
.fill(null) return forest.map((l, x) => l.map((_, y) => va(x, y)));
.map(() => Array(forest.length).fill(0));
for (const x of R.range(0, forest.length)) {
for (const y of R.range(0, forest.length)) {
viz[x][y] = visibilityAround(forest)(x, y);
}
}
return viz;
}, },
R.flatten, R.flatten,
R.maxBy(R.identity) R.maxBy(R.identity)