Published
Edited
Dec 4, 2019
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
{
const set = new Set();
let x = 0;
let y = 0;
leadWire.forEach((step) => {
const paces = parseInt(step.substring(1), 10);
const direction = step.charAt(0);
for (let i = 0; i < paces; i++) {
switch (direction) {
case 'U': // up
y++;
break;
case 'D': // down
y--;
break;
case 'L': // left
x--;
break;
case 'R': // right
x++;
break;
}
set.add(`${x},${y}`);
}
});
let bestIntersection;
x = 0;
y = 0;
secondWire.forEach((step) => {
const paces = parseInt(step.substring(1), 10);
const direction = step.charAt(0);
for (let i = 0; i < paces; i++) {
switch (direction) {
case 'U': // up
y++;
break;
case 'D': // down
y--;
break;
case 'L': // left
x--;
break;
case 'R': // right
x++;
break;
}
if (set.has(`${x},${y}`)) {
if (!bestIntersection || Math.abs(x) + Math.abs(y) < bestIntersection) {
bestIntersection = Math.abs(x) + Math.abs(y);
}
}
}
});
return bestIntersection;
}
Insert cell
Insert cell
{
const map = new Map();
let x = 0;
let y = 0;
let steps = 0;
leadWire.forEach((step) => {
const paces = parseInt(step.substring(1), 10);
const direction = step.charAt(0);
for (let i = 0; i < paces; i++) {
switch (direction) {
case 'U': // up
y++;
break;
case 'D': // down
y--;
break;
case 'L': // left
x--;
break;
case 'R': // right
x++;
break;
}
steps++;
if (!map.has(`${x},${y}`)) {
map.set(`${x},${y}`, steps);
}
}
});
let bestIntersection;
x = 0;
y = 0;
steps = 0;
secondWire.forEach((step) => {
const paces = parseInt(step.substring(1), 10);
const direction = step.charAt(0);
for (let i = 0; i < paces; i++) {
switch (direction) {
case 'U': // up
y++;
break;
case 'D': // down
y--;
break;
case 'L': // left
x--;
break;
case 'R': // right
x++;
break;
}
steps++;
if (map.has(`${x},${y}`)) {
if (!bestIntersection || steps + map.get(`${x},${y}`) < bestIntersection) {
bestIntersection = steps + map.get(`${x},${y}`);
}
}
}
});
return bestIntersection;
}
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more