trench = {
const W = 424;
const plan = new Uint16Array(W * W);
let x = 61;
let y = 189;
let maxX = 0;
let maxY = 0;
let minX = 0;
let minY = 0;
for (const [, dir, n, c] of input
.split("\n")
.map((d) => d.match(/^([URLD]) (\d+) [(](.*)[)]/))) {
switch (dir) {
case "R":
for (let i = 0; i < +n; ++i) plan[++x + W * y] = 1;
break;
case "L":
for (let i = 0; i < +n; ++i) plan[--x + W * y] = 1;
break;
case "U":
for (let i = 0; i < +n; ++i) plan[x + W * --y] = 1;
break;
case "D":
for (let i = 0; i < +n; ++i) plan[x + W * ++y] = 1;
break;
}
if (x > maxX) maxX = x;
if (y > maxY) maxY = y;
if (x < minX) minX = x;
if (y < minY) minY = y;
}
return {
W,
minX,
minY,
maxX,
maxY,
plan,
view: d3
.range(maxY + 1)
.map((y) =>
d3
.range(maxX + 1)
.map((x) => (plan[x + W * y] ? "#" : " "))
.join("")
)
.join("\n")
};
}