Add day 3 part 2 in awk
This commit is contained in:
parent
45b7008afd
commit
8a2b531c3f
|
@ -27,33 +27,51 @@ function changePosition(dir) {
|
||||||
y--;
|
y--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function calculateDistances() {
|
||||||
|
if (grid[x,y] == "X" && x+y != 0)
|
||||||
|
intersectionPaths[x,y] += steps;
|
||||||
|
steps++;
|
||||||
|
}
|
||||||
|
|
||||||
|
function markCollisions() {
|
||||||
|
if (grid[x,y] != "" && grid[x,y] != wirenum) {
|
||||||
|
grid[x,y] = "X";
|
||||||
|
manhattan = abs(x) + abs(y);
|
||||||
|
if (manhattan < closestCollision && manhattan != 0)
|
||||||
|
closestCollision = manhattan;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
grid[x,y] = wirenum;
|
||||||
|
}
|
||||||
|
|
||||||
BEGIN {
|
BEGIN {
|
||||||
closestCollision = 1000000000;
|
closestCollision = 1000000000;
|
||||||
|
shortestPath = 1000000000;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
wirenum++;
|
wirenum++;
|
||||||
x = 0;
|
x = 0;
|
||||||
y = 0;
|
y = 0;
|
||||||
|
steps = 0;
|
||||||
len = separateCommands($1);
|
len = separateCommands($1);
|
||||||
for (i=1; i<=len; i++) {
|
for (i=1; i<=len; i++) {
|
||||||
dir = direction(arr[i])
|
dir = direction(arr[i])
|
||||||
dis = distance(arr[i])
|
dis = distance(arr[i])
|
||||||
for (j=0; j<dis; j++) {
|
for (j=0; j<dis; j++) {
|
||||||
if (grid[x,y] != "" && grid[x,y] != wirenum) {
|
# First pass
|
||||||
grid[x,y] = "X";
|
if (wirenum <= 2)
|
||||||
printf("Collision at %d,%d\n", x, y);
|
markCollisions();
|
||||||
manhattan = abs(x) + abs(y);
|
# Second pass
|
||||||
if (manhattan < closestCollision && manhattan != 0)
|
|
||||||
closestCollision = manhattan;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
grid[x,y] = wirenum;
|
calculateDistances();
|
||||||
changePosition(dir);
|
changePosition(dir);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
END {
|
END {
|
||||||
printf("Closest collision at %d\n", closestCollision);
|
printf("Part 1: %d\n", closestCollision);
|
||||||
|
asort(intersectionPaths);
|
||||||
|
printf("Part 2: %d\n", intersectionPaths[1]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
cat input input | awk -f day3.awk
|
Loading…
Reference in New Issue
Block a user