answers for day 9
This commit is contained in:
parent
7268243458
commit
b69c454c4c
132
09/code.js
Normal file
132
09/code.js
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
const fs = require('fs');
|
||||||
|
|
||||||
|
//const inputArray = fs.readFileSync('sample.txt').toString().split("\n");
|
||||||
|
const inputArray = fs.readFileSync('input.txt').toString().split("\n");
|
||||||
|
|
||||||
|
// Part One
|
||||||
|
|
||||||
|
const head = [[0, 0]];
|
||||||
|
const tail = [[0, 0]];
|
||||||
|
|
||||||
|
for (i in inputArray) {
|
||||||
|
const contents = inputArray[i].split(" ");
|
||||||
|
const dir = contents[0];
|
||||||
|
const dist = contents[1];
|
||||||
|
|
||||||
|
for (m = 1; m <= dist; m++) {
|
||||||
|
let hx = head[0][0];
|
||||||
|
let hy = head[0][1];
|
||||||
|
let tx = tail[0][0];
|
||||||
|
let ty = tail[0][1];
|
||||||
|
|
||||||
|
if (dir === 'U') {
|
||||||
|
hy++;
|
||||||
|
} else if (dir === "D") {
|
||||||
|
hy--;
|
||||||
|
} else if (dir === "L") {
|
||||||
|
hx--;
|
||||||
|
} else if (dir === "R") {
|
||||||
|
hx++;
|
||||||
|
}
|
||||||
|
|
||||||
|
head.unshift([hx, hy]);
|
||||||
|
tail.unshift(walk(hx, hy, tx, ty));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let strings = [];
|
||||||
|
for (pos of tail) {
|
||||||
|
strings.push(pos.join('-'));
|
||||||
|
}
|
||||||
|
let touched = [...new Set(strings)];
|
||||||
|
|
||||||
|
console.log(touched.length);
|
||||||
|
|
||||||
|
// Part Two
|
||||||
|
|
||||||
|
const h = [[0, 0]];
|
||||||
|
const one = [[0, 0]];
|
||||||
|
const two = [[0, 0]];
|
||||||
|
const three = [[0, 0]];
|
||||||
|
const four = [[0, 0]];
|
||||||
|
const five = [[0, 0]];
|
||||||
|
const six = [[0, 0]];
|
||||||
|
const seven = [[0, 0]];
|
||||||
|
const eight = [[0, 0]];
|
||||||
|
const t = [[0, 0]];
|
||||||
|
|
||||||
|
for (i in inputArray) {
|
||||||
|
const contents = inputArray[i].split(" ");
|
||||||
|
const dir = contents[0];
|
||||||
|
const dist = contents[1];
|
||||||
|
|
||||||
|
for (m = 1; m <= dist; m++) {
|
||||||
|
let hx = h[0][0];
|
||||||
|
let hy = h[0][1];
|
||||||
|
|
||||||
|
if (dir === 'U') {
|
||||||
|
hy++;
|
||||||
|
} else if (dir === "D") {
|
||||||
|
hy--;
|
||||||
|
} else if (dir === "L") {
|
||||||
|
hx--;
|
||||||
|
} else if (dir === "R") {
|
||||||
|
hx++;
|
||||||
|
}
|
||||||
|
|
||||||
|
h.unshift([hx, hy]);
|
||||||
|
one.unshift(walk(hx, hy, one[0][0], one[0][1]));
|
||||||
|
two.unshift(walk(one[0][0], one[0][1], two[0][0], two[0][1]));
|
||||||
|
three.unshift(walk(two[0][0], two[0][1], three[0][0], three[0][1]));
|
||||||
|
four.unshift(walk(three[0][0], three[0][1], four[0][0], four[0][1]));
|
||||||
|
five.unshift(walk(four[0][0], four[0][1], five[0][0], five[0][1]));
|
||||||
|
six.unshift(walk(five[0][0], five[0][1], six[0][0], six[0][1]));
|
||||||
|
seven.unshift(walk(six[0][0], six[0][1], seven[0][0], seven[0][1]));
|
||||||
|
eight.unshift(walk(seven[0][0], seven[0][1], eight[0][0], eight[0][1]));
|
||||||
|
t.unshift(walk(eight[0][0], eight[0][1], t[0][0], t[0][1]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
strings = [];
|
||||||
|
for (pos of t) {
|
||||||
|
strings.push(pos.join('-'));
|
||||||
|
}
|
||||||
|
touched = [...new Set(strings)];
|
||||||
|
|
||||||
|
console.log(touched.length);
|
||||||
|
|
||||||
|
// functions
|
||||||
|
|
||||||
|
function walk(hx, hy, tx, ty) {
|
||||||
|
if ((hx > tx) && Math.abs(hx - tx) >= 2) {
|
||||||
|
tx++;
|
||||||
|
if (hy > ty) {
|
||||||
|
ty++;
|
||||||
|
} else if (ty > hy) {
|
||||||
|
ty--;
|
||||||
|
}
|
||||||
|
} else if ((tx > hx) && Math.abs(tx - hx) >= 2) {
|
||||||
|
tx--;
|
||||||
|
if (hy > ty) {
|
||||||
|
ty++;
|
||||||
|
} else if (ty > hy) {
|
||||||
|
ty--;
|
||||||
|
}
|
||||||
|
} else if ((hy > ty) && Math.abs(hy - ty) >= 2) {
|
||||||
|
ty++;
|
||||||
|
if (hx > tx) {
|
||||||
|
tx++;
|
||||||
|
} else if (tx > hx) {
|
||||||
|
tx--;
|
||||||
|
}
|
||||||
|
} else if ((ty > hy) && Math.abs(ty - hy) >= 2) {
|
||||||
|
ty--;
|
||||||
|
if (hx > tx) {
|
||||||
|
tx++;
|
||||||
|
} else if (tx > hx) {
|
||||||
|
tx--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return [tx, ty]
|
||||||
|
}
|
2000
09/input.txt
Normal file
2000
09/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
8
09/sample.txt
Normal file
8
09/sample.txt
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
R 5
|
||||||
|
U 8
|
||||||
|
L 8
|
||||||
|
D 3
|
||||||
|
R 17
|
||||||
|
D 10
|
||||||
|
L 25
|
||||||
|
U 20
|
Loading…
Reference in New Issue
Block a user