Solve 2017/03
This commit is contained in:
parent
0969017c4d
commit
9529443943
1 changed files with 64 additions and 0 deletions
64
2017/03/solve.py
Normal file
64
2017/03/solve.py
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# PART 1
|
||||||
|
|
||||||
|
def spiral(nth):
|
||||||
|
length = 1
|
||||||
|
nth -= 1
|
||||||
|
x = 0
|
||||||
|
y = 0
|
||||||
|
while True:
|
||||||
|
x += min(length, nth)
|
||||||
|
nth -= min(length, nth)
|
||||||
|
if nth == 0: return x, y
|
||||||
|
y += min(length, nth)
|
||||||
|
nth -= min(length, nth)
|
||||||
|
if nth == 0: return x, y
|
||||||
|
|
||||||
|
length += 1
|
||||||
|
|
||||||
|
x -= min(length, nth)
|
||||||
|
nth -= min(length, nth)
|
||||||
|
if nth == 0: return x, y
|
||||||
|
y -= min(length, nth)
|
||||||
|
nth -= min(length, nth)
|
||||||
|
if nth == 0: return x, y
|
||||||
|
|
||||||
|
length += 1
|
||||||
|
|
||||||
|
def manhattan(x, y):
|
||||||
|
return abs(x) + abs(y)
|
||||||
|
|
||||||
|
# PART 2
|
||||||
|
|
||||||
|
def store(cap):
|
||||||
|
stored = {(0, 0): 1}
|
||||||
|
nth = 2
|
||||||
|
while True:
|
||||||
|
x, y = spiral(nth)
|
||||||
|
adjacent = 0
|
||||||
|
adjacent += stored.get((x-1, y-1), 0)
|
||||||
|
adjacent += stored.get((x , y-1), 0)
|
||||||
|
adjacent += stored.get((x+1, y-1), 0)
|
||||||
|
adjacent += stored.get((x-1, y ), 0)
|
||||||
|
adjacent += stored.get((x+1, y ), 0)
|
||||||
|
adjacent += stored.get((x-1, y+1), 0)
|
||||||
|
adjacent += stored.get((x , y+1), 0)
|
||||||
|
adjacent += stored.get((x+1, y+1), 0)
|
||||||
|
stored[(x, y)] = adjacent
|
||||||
|
nth += 1
|
||||||
|
|
||||||
|
if adjacent > cap:
|
||||||
|
return adjacent
|
||||||
|
|
||||||
|
def main():
|
||||||
|
nth = 277678
|
||||||
|
print(f"Solutions")
|
||||||
|
x, y = spiral(nth)
|
||||||
|
dist = manhattan(x, y)
|
||||||
|
print(f"Part 1: {dist}")
|
||||||
|
adjacent = store(nth)
|
||||||
|
print(f"Part 2: {adjacent}")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Loading…
Add table
Add a link
Reference in a new issue