Add day 3 part 2 in awk

This commit is contained in:
kageru 2019-12-03 09:57:09 +01:00
parent 45b7008afd
commit 8a2b531c3f
2 changed files with 30 additions and 9 deletions

View File

@ -27,33 +27,51 @@ function changePosition(dir) {
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 {
closestCollision = 1000000000;
shortestPath = 1000000000;
}
{
wirenum++;
x = 0;
y = 0;
steps = 0;
len = separateCommands($1);
for (i=1; i<=len; i++) {
dir = direction(arr[i])
dis = distance(arr[i])
for (j=0; j<dis; j++) {
if (grid[x,y] != "" && grid[x,y] != wirenum) {
grid[x,y] = "X";
printf("Collision at %d,%d\n", x, y);
manhattan = abs(x) + abs(y);
if (manhattan < closestCollision && manhattan != 0)
closestCollision = manhattan;
}
# First pass
if (wirenum <= 2)
markCollisions();
# Second pass
else
grid[x,y] = wirenum;
calculateDistances();
changePosition(dir);
}
}
}
END {
printf("Closest collision at %d\n", closestCollision);
printf("Part 1: %d\n", closestCollision);
asort(intersectionPaths);
printf("Part 2: %d\n", intersectionPaths[1]);
}

3
2019/03/run_day3_awk.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/sh
cat input input | awk -f day3.awk