wideGrid = {
const lines = day14_input.split("\n");
const coords = lines.flatMap((line) =>
line.split(" -> ").map((coord) => coord.split(",").map(Number))
);
let [minX, maxX] = d3.extent(coords, (coord) => coord[0]);
const [minY, maxY] = [0, d3.max(coords, (coord) => coord[1])];
minX -= maxY;
maxX += maxY;
const height = maxY - minY + 1;
const width = maxX - minX + 1;
const grid = Array.from({ length: height }, () =>
Array.from({ length: width }, () => ".")
);
for (const line of lines) {
const coordinates = line
.split(" -> ")
.map((coord) => coord.split(",").map(Number));
for (let i = 1; i < coordinates.length; i++) {
const [startX, startY] = coordinates[i - 1];
const [endX, endY] = coordinates[i];
if (startX === endX) {
const minYCoord = Math.min(startY, endY);
const maxYCoord = Math.max(startY, endY);
for (let y = minYCoord; y <= maxYCoord; y++) {
grid[y - minY][startX - minX] = "#";
}
} else {
const minXCoord = Math.min(startX, endX);
const maxXCoord = Math.max(startX, endX);
for (let x = minXCoord; x <= maxXCoord; x++) {
grid[startY - minY][x - minX] = "#";
}
}
}
}
grid.push(new Array(grid[0].length).fill("."));
grid.push(new Array(grid[0].length).fill("#"));
return {
grid,
offsetX: minX,
offsetY: minY
};
}