Day 16 (not super efficient)
This commit is contained in:
1 parent
312113ce81
commit
4a5a3ba757
4 files changed
+182
No files matched your search
Whitespace-only changes.
Executable
+62
@@ -0,0 +1,62 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
ENERGY = []
|
||||||
|
|
||||||
|
|
||||||
|
# direction given as tuple, e.g., (1,0) for right
|
||||||
|
def move_beam(x,y,d,grid):
|
||||||
|
while True:
|
||||||
|
if (x > len(grid[0])-1) or (x < 0) or (y > len(grid)-1) or (y < 0): break
|
||||||
|
if d in ENERGY[x+y*len(grid[0])]: break
|
||||||
|
ENERGY[x+y*len(grid[0])].append(d)
|
||||||
|
tile = grid[y][x]
|
||||||
|
if tile == '.':
|
||||||
|
x, y = x+d[0], y+d[1]
|
||||||
|
elif (tile == '-' and d[1] == 0) or (tile == '|' and d[0] == 0):
|
||||||
|
x,y = x+d[0], y+d[1]
|
||||||
|
elif tile == '\\':
|
||||||
|
d = (d[1],d[0])
|
||||||
|
x,y = x+d[0], y+d[1]
|
||||||
|
elif tile == '/':
|
||||||
|
d = (-d[1],-d[0])
|
||||||
|
x,y = x+d[0], y+d[1]
|
||||||
|
elif tile == '-':
|
||||||
|
move_beam(x-1, y, (-1,0), grid)
|
||||||
|
move_beam(x+1, y, (1,0), grid)
|
||||||
|
elif tile == '|':
|
||||||
|
move_beam(x, y-1, (0,-1), grid)
|
||||||
|
move_beam(x, y+1, (0,1), grid)
|
||||||
|
|
||||||
|
|
||||||
|
def energize(x,y,d,grid):
|
||||||
|
global ENERGY
|
||||||
|
ENERGY = []
|
||||||
|
for i in range(len(grid) * len(grid[0])):
|
||||||
|
ENERGY.append([])
|
||||||
|
move_beam(x,y,d,grid)
|
||||||
|
return len(ENERGY) - ENERGY.count([])
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
grid = [list(line.strip('\n')) for line in open(sys.argv[1])]
|
||||||
|
res2 = 0
|
||||||
|
for i in range(len(grid)):
|
||||||
|
res2 = max(energize(0,i,(1,0),grid),res2)
|
||||||
|
for i in range(len(grid[0])):
|
||||||
|
res2 = max(energize(i,0,(0,1),grid),res2)
|
||||||
|
for i in range(len(grid)):
|
||||||
|
res2 = max(energize(len(grid)-1,i,(-1,0),grid),res2)
|
||||||
|
for i in range(len(grid[0])):
|
||||||
|
res2 = max(energize(i,len(grid[0])-1,(0,-1),grid),res2)
|
||||||
|
|
||||||
|
# challenge 1
|
||||||
|
res1 = str(energize(0,0,(1,0),grid))
|
||||||
|
print(f"challenge 1:\n{res1}\n")
|
||||||
|
|
||||||
|
# challenge 2
|
||||||
|
res2 = str(res2)
|
||||||
|
print(f"challenge 2:\n{res2}\n")
|
||||||
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
.|...\....
|
||||||
|
|.-.\.....
|
||||||
|
.....|-...
|
||||||
|
........|.
|
||||||
|
..........
|
||||||
|
.........\
|
||||||
|
..../.\\..
|
||||||
|
.-.-/..|..
|
||||||
|
.|....-|.\
|
||||||
|
..//.|....
|
||||||
@@ -0,0 +1,110 @@
|
|||||||
|
\.................-....-.-.|....................|......./.|.\................|...........|....--..............
|
||||||
|
............-...................|.............|..-.......-/..............-....\...............................
|
||||||
|
|.......//...........................................|...............-......../.....\....................\....
|
||||||
|
....|......-.-.............-......\.....\......../..................../.......................................
|
||||||
|
..\..\../................../.............-............|....-.........................|......|...............|.
|
||||||
|
-..|........................./.................\.........\./.............\..|..-...-.............\............
|
||||||
|
.\......||-..................../................-................./....|........................|.............
|
||||||
|
..............\./...........-.........../-................-.........\...\........../-.......|.................
|
||||||
|
....-..........-.-.....\......................../.......-..........-/.....................||................|.
|
||||||
|
./..........|/............................\./............................./....../........\...-|............\-
|
||||||
|
........\.............................-...../............---...........|...............|......\\..............
|
||||||
|
........//....|.\......./...\.............|..............\............./...........-.|..-.............|.......
|
||||||
|
...................\...........-/..-......\...|........-.|................\-.......|........\.................
|
||||||
|
|.|....../|............\./..-........\..............................-.....................|....../............
|
||||||
|
............-....................-..............-..-................|.//.............-.............-..........
|
||||||
|
..........-.......-......|-................./........../...\........-.......................-..\.......\......
|
||||||
|
................../....|............-....../................./.....................|.................-........
|
||||||
|
...\..............--..|.....||.....\.............\../................................................-.-...../
|
||||||
|
.........-......|....-.................-.......\-................./..|...................|\.....\.....|.|-....
|
||||||
|
......................-......................-............/....................\...../...\..../...............
|
||||||
|
...../......-...............\...-....|......../.........\................................|.........../........
|
||||||
|
........../.......\..............-...............\........-|....-......-.............|...........|........./..
|
||||||
|
./...............\....../....../..../...................................................|.....|.|../......./..
|
||||||
|
....|\........\-...../...................-.............\.\..................................././..........\...
|
||||||
|
....................................-..../......................-..///......-...|.|..........................|
|
||||||
|
.........-\.....-...........|........./..........-..\.....\./...................-........................-....
|
||||||
|
....../.......././......--.....|.\..-...-....\..........................-....-...-..|.|.....|.......\-./......
|
||||||
|
...-....................-................|.............-../........|../........-.............|\...............
|
||||||
|
...../...........-......../................|................|.....\.....-.............../...|....../\.........
|
||||||
|
./...\.....\..-./.........................|................................-....................-.............
|
||||||
|
.............\|.../....\\.....\..|...........\.....................|......|.|.....|.....-............\.\......
|
||||||
|
........................|......-..........-.../......-........|...../.\|...-................................|.
|
||||||
|
.......\...-...\..........|.....\...................\.........|..........-/.........\...................../...
|
||||||
|
.-|.......|............./..|./....-.../...\............-......../..............-.......//...-...........||.\..
|
||||||
|
..|..\./..-........\..|....-..\.........../..............................|..\..................../..|...../-..
|
||||||
|
.|.........-.\...........................\..../......./....||............\..........|............-.\|.........
|
||||||
|
....................\..../|............................\.../..|........./...../............||........\....../.
|
||||||
|
....................../.....|...................|......|.................|..|.......|................|........
|
||||||
|
.....................\.........-..../.........../../..-......\.................|.../....................../...
|
||||||
|
........\.-................/........\...../....../.|.\...|/../..........................................-.....
|
||||||
|
....................................|......./...../............-................-/..|.-....................\..
|
||||||
|
..|.........................-....................../...|.....|.............../.........../.....|\.............
|
||||||
|
.......................................|.\.|.......................-.......|..............\............-./....
|
||||||
|
..........//................\..|./................-.................-..../../|................................
|
||||||
|
.|......................................./............/..-.......-.|.........................\|..|............
|
||||||
|
............................/.-..................-./..../..............|-.........-|..........................
|
||||||
|
.................-...|................\.........|\...............................\...........\...//...........
|
||||||
|
........\..|.|--.............|.......\.................|......|\./.........................\.|................
|
||||||
|
.-|.............|\|.....\|././...|..\.............\..\...................\...........\...../..................
|
||||||
|
..../..............-..|...|.........-.........\.....-...........-.....|...\.-....-../.................\.......
|
||||||
|
........\.|........\\.........-...............-.......-..................................../..........|.......
|
||||||
|
...............-...................\/...............\..-\...........|.-........-.\-.....\....\..../......-....
|
||||||
|
.../-......./..............|.......|..//......-....................../.|....\......|..\.........../-\.........
|
||||||
|
.-....|./....-.../....../.....-..............\..-..\..-............\................|...|..........-.......|..
|
||||||
|
|......../...................\..../....\......./..|.................\...............\.........\../.|......../.
|
||||||
|
../............/........|..|.......................................\../\...............\............/.......\.
|
||||||
|
........-.-...\........../.......-....-............./.............-......./................\..........-.......
|
||||||
|
.../-................/......|/........-......|..........|..-..............|/..........................-.......
|
||||||
|
......./............../...................|../...../................./../..........\../.....\....\............
|
||||||
|
..............-..|../-........................|...\.../...-/..........\.......\......\.................-....-.
|
||||||
|
......................................-/.\........................../......-..\..\........\...............|..\
|
||||||
|
.............-.........../-|........-........\....-.....\....../..\........................\......|.......\...
|
||||||
|
.././....................|\.../\.........\.|.............../..../...|......./.\...|.......\.........|.........
|
||||||
|
......................./........./-./...........................|/...\........-.../.................||........
|
||||||
|
..............|./........\..............\.............................|/................../............|.-..|.
|
||||||
|
.........................-......../........./.....|....-..-.-..............-.-......../.......\...\./.........
|
||||||
|
.-............../../....\//......../...|......|......\..................-......\.....-....\|.........|........
|
||||||
|
..............-.....................\.................\.|...-............................|......\.............
|
||||||
|
\\.....|...........\............|............................../............................................\.
|
||||||
|
.-........../|...\..............-...............................\...........\.....|......\..........\.........
|
||||||
|
.\............\.|....-........./....../../.....-..\........|...............-..................|............-.|
|
||||||
|
.....\......-.........-.........|....../..-....|.....\..../....|........-.....................................
|
||||||
|
..........\-..-..../\.....................\.........-...........|..../-.......................\....-..........
|
||||||
|
...../............./..|..................../............../../.........|...............-../...................
|
||||||
|
.....|...../.....|......-.............................|...........-......................./............/......
|
||||||
|
.....................||./.-.................-.........\.\..................-..............\...--.........\....
|
||||||
|
.|......-......-.\.......-......\....\..\..|.........../......./.....................-..........|.............
|
||||||
|
.....\.....\............................--..................|..-........\....\...\.|.\.-...........\...\......
|
||||||
|
./...........\.......\/......|........./..|................\-................/....\...................\.\.....
|
||||||
|
..|...............................-.........-.|/......|.....|........\........................................
|
||||||
|
.......|............-............../............-......../..-...\|-...-..../...........-..........-..-/.......
|
||||||
|
............................-..\.......................................-.........................\..........-.
|
||||||
|
........................\.........|................||...-....\......\.....\.................\...\\....../.....
|
||||||
|
....\../.....-.......-.................-|...................-../.|-............|........-|......./../...\.....
|
||||||
|
..................................................\.......|......./..\./......../....|....-|.-................
|
||||||
|
....../.........|.......|...|.......\.../|...............-.......-\..\......././..................|..\.|...../
|
||||||
|
............|.....\...........-.............................../.....-.................-.../............/.../..
|
||||||
|
...../.......\............................|.....\....\................/..................\......../...........
|
||||||
|
..................-....\.........\|................/|......../.-................|...\......................--.
|
||||||
|
......-..-.....................................-\.........|.../.....................|..|.-.....\...|....\....-
|
||||||
|
......-......-.................-......|..................................................|....................
|
||||||
|
..\...............|......../........-......./.............../...........-..........|/.....///\.....-..........
|
||||||
|
.........../..|.............../..........\|.........................\...|.....\||....\...|.|/.....-....../....
|
||||||
|
...../...../.....-............................................|........|............|.........................
|
||||||
|
......-../\................../..............\............\.................../|...........|.............\.....
|
||||||
|
...........-..........................-....\..\..|.-..............................................\........|..
|
||||||
|
/.--..//....\...............................-............|..././..............................................
|
||||||
|
/...............|.........../..../......................\.....|............|...........|...................-..
|
||||||
|
..-................\../|......../...................../...........\..|.|\../..................................
|
||||||
|
....|...../.....-......\.........................-.....//...............|.........-.......|...-....--.........
|
||||||
|
....|..\.-..../....................|..........\............./...........\.../.................................
|
||||||
|
............................\...................................../.......................|...........\.......
|
||||||
|
.........../.....-.....................\..\.-..|............-...............\.........................-.......
|
||||||
|
......-.......-\.\......\..-.-........./...........\..........|........................\.....-.....\..........
|
||||||
|
..............-....../.-............./........../..............\-....-.../...../.-............\......./.-.....
|
||||||
|
......|...................................................||..../...|\.....................-.../...\........|.
|
||||||
|
......|.//........................-...../...........-..\...|......|..................../........../...........
|
||||||
|
.....................................................|.........//...........|\.....\....................|.../.
|
||||||
|
............-..||...........|....../....................\...\................................../.......|......
|
||||||
|
..\....\......./-\.\...........-\................|.........../................||.../.....-...........\........
|
||||||
Reference in new issue
Block a user