Added 2017/11

This commit is contained in:
FrederikBaerentsen 2024-11-23 14:24:52 +01:00
parent a3a7d201b3
commit ac2a79d085
2 changed files with 150 additions and 0 deletions

52
2017/11/11.md Normal file
View File

@ -0,0 +1,52 @@
## \-\-- Day 11: Hex Ed \-\--
Crossing the bridge, you\'ve barely reached the other side of the stream
when a program comes up to you, clearly in distress. \"It\'s my child
process,\" she says, \"he\'s gotten lost in an infinite grid!\"
Fortunately for her, you have plenty of experience with infinite grids.
Unfortunately for you, it\'s a [hex
grid](https://en.wikipedia.org/wiki/Hexagonal_tiling).
The hexagons (\"hexes\") in [this
grid]{title="Raindrops on roses and whiskers on kittens."} are aligned
such that adjacent hexes can be found to the north, northeast,
southeast, south, southwest, and northwest:
\ n /
nw +--+ ne
/ \
-+ +-
\ /
sw +--+ se
/ s \
You have the path the child process took. Starting where he started, you
need to determine the fewest number of steps required to reach him. (A
\"step\" means to move from the hex you are in to any adjacent hex.)
For example:
- `ne,ne,ne` is `3` steps away.
- `ne,ne,sw,sw` is `0` steps away (back where you started).
- `ne,ne,s,s` is `2` steps away (`se,se`).
- `se,sw,se,sw,sw` is `3` steps away (`s,s,sw`).
Your puzzle answer was `675`.
## \-\-- Part Two \-\-- {#part2}
*How many steps away* is the *furthest* he ever got from his starting
position?
Your puzzle answer was `1424`.
Both parts of this puzzle are complete! They provide two gold stars:
\*\*
At this point, you should [return to your Advent calendar](/2017) and
try another puzzle.
If you still want to see it, you can [get your puzzle
input](11/input).

98
2017/11/solution.py Normal file
View File

@ -0,0 +1,98 @@
#!/bin/python3
import sys,re,math
from pprint import pprint
input_f = 'input'
part = 2
def manhattan(a, b):
return int(sum(abs(val1-val2) for val1, val2 in zip(a,b))/2)
#########################################
# #
# Part 1 #
# #
#########################################
# https://www.redblobgames.com/grids/hexagons/
if part == 1:
with open(input_f) as file:
for line in file:
steps = line.rsplit()[0].split(',')
#print(steps)
grid = []
w, h = 11,11
grid = [[' ' for x in range(w)] for y in range(h)]
start = int(len(grid)/2)
distance = []
x = 0
y = 0
z = 0
for i in steps:
if i == 'ne':
x += 1
z -= 1
if i == 'sw':
x -= 1
z += 1
if i == 's':
z += 1
y -= 1
if i == 'n':
z -= 1
y += 1
if i == 'se':
x += 1
y -= 1
if i == 'nw':
x -= 1
y += 1
print(int((abs(x)+abs(y)+abs(z))/2))
#########################################
# #
# Part 2 #
# #
#########################################
if part == 2:
with open(input_f) as file:
for line in file:
steps = line.rsplit()[0].split(',')
distance = []
x = 0
y = 0
z = 0
for i in steps:
if i == 'ne':
x += 1
z -= 1
if i == 'sw':
x -= 1
z += 1
if i == 's':
z += 1
y -= 1
if i == 'n':
z -= 1
y += 1
if i == 'se':
x += 1
y -= 1
if i == 'nw':
x -= 1
y += 1
distance.append((abs(x)+abs(y)+abs(z))/2)
print('Distance:',int(max(distance)))