Optimizing 2023-12-08
This commit is contained in:
parent
3fb61d335f
commit
a1df3dee02
BIN
2023/day8/.part2.py.swp
Normal file
BIN
2023/day8/.part2.py.swp
Normal file
Binary file not shown.
@ -17,13 +17,19 @@ def pp(x):
|
||||
d, *maps = open(input_f).read().split('\n')
|
||||
|
||||
|
||||
class Node():
|
||||
def __init__(self,value,left,right):
|
||||
self.value = value
|
||||
self.left = left
|
||||
self.right = right
|
||||
|
||||
s = []
|
||||
l = []
|
||||
r = []
|
||||
|
||||
maps = maps
|
||||
|
||||
nmaps = []
|
||||
nodes = {}
|
||||
|
||||
for i in maps:
|
||||
if i == '':
|
||||
@ -31,83 +37,18 @@ for i in maps:
|
||||
s = i[:3]
|
||||
l = i[7:10]
|
||||
r = i[12:15]
|
||||
nmaps.append([s,l,r])
|
||||
nodes[s] = Node(s,l,r)
|
||||
|
||||
pprint(nodes)
|
||||
|
||||
#pprint(d)
|
||||
#pprint(maps)
|
||||
#pprint(nmaps)
|
||||
|
||||
count = 0
|
||||
way = 'AAA'
|
||||
first = True
|
||||
found = False
|
||||
current = 'AAA'
|
||||
steps = 0
|
||||
index = 0
|
||||
|
||||
way = []
|
||||
|
||||
for i in nmaps:
|
||||
if i[0].endswith('A'):
|
||||
way.append(i[0])
|
||||
|
||||
print(way)
|
||||
|
||||
cycles = []
|
||||
|
||||
print(d)
|
||||
|
||||
for cur in way:
|
||||
cycle = []
|
||||
|
||||
count = 0
|
||||
cur_d = d
|
||||
|
||||
while True:
|
||||
while count == 0 or not cur.endswith('Z'):
|
||||
directions = d
|
||||
while current != 'ZZZ':
|
||||
steps += 1
|
||||
directions = directions[index]
|
||||
if directions == 'L':
|
||||
|
||||
|
||||
count += 1
|
||||
|
||||
index = [(i,table.index(cur)) for i, table in enumerate(nmaps) if cur in table]
|
||||
|
||||
for j in index:
|
||||
if list(j)[1] == 0:
|
||||
index = list(j)[0]
|
||||
if cur_d[0] == 'R':
|
||||
cur = nmaps[index][2]
|
||||
if cur_d[0] == 'L':
|
||||
cur = nmaps[index][1]
|
||||
|
||||
|
||||
print(cur)
|
||||
|
||||
cur_d = cur_d[1:] + cur_d[0]
|
||||
|
||||
print(cur_d)
|
||||
input()
|
||||
|
||||
cycle.append(count)
|
||||
cycles.append(cycle)
|
||||
|
||||
|
||||
|
||||
print(cycles)
|
||||
|
||||
"""
|
||||
while found == False:
|
||||
i = d[count%len(d)]
|
||||
c = way
|
||||
index = [(i,table.index(c)) for i, table in enumerate(nmaps) if c in table]
|
||||
for j in index:
|
||||
if list(j)[1] == 0:
|
||||
index = list(j)[0]
|
||||
if i == 'R':
|
||||
way = nmaps[index][2]
|
||||
if i == 'L':
|
||||
way = nmaps[index][1]
|
||||
count += 1
|
||||
if way == 'ZZZ':
|
||||
found = True
|
||||
continue
|
||||
"""
|
||||
print('Result: ' + str(count))
|
||||
print(steps)
|
||||
|
113
2023/day8/part2.py.bk
Normal file
113
2023/day8/part2.py.bk
Normal file
@ -0,0 +1,113 @@
|
||||
#!/bin/python3
|
||||
|
||||
import re
|
||||
import sys
|
||||
from pprint import pprint
|
||||
from collections import Counter
|
||||
import numpy as np
|
||||
|
||||
input_f = sys.argv[1]
|
||||
|
||||
def pp(x):
|
||||
for i in x:
|
||||
for j in i:
|
||||
print(j)
|
||||
print()
|
||||
|
||||
d, *maps = open(input_f).read().split('\n')
|
||||
|
||||
|
||||
s = []
|
||||
l = []
|
||||
r = []
|
||||
|
||||
maps = maps
|
||||
|
||||
nmaps = []
|
||||
|
||||
for i in maps:
|
||||
if i == '':
|
||||
continue
|
||||
s = i[:3]
|
||||
l = i[7:10]
|
||||
r = i[12:15]
|
||||
nmaps.append([s,l,r])
|
||||
|
||||
|
||||
#pprint(d)
|
||||
#pprint(maps)
|
||||
#pprint(nmaps)
|
||||
|
||||
count = 0
|
||||
way = 'AAA'
|
||||
first = True
|
||||
found = False
|
||||
index = 0
|
||||
|
||||
way = []
|
||||
|
||||
for i in nmaps:
|
||||
if i[0].endswith('A'):
|
||||
way.append(i[0])
|
||||
|
||||
print(way)
|
||||
|
||||
cycles = []
|
||||
|
||||
print(d)
|
||||
|
||||
for cur in way:
|
||||
cycle = []
|
||||
|
||||
count = 0
|
||||
cur_d = d
|
||||
|
||||
while True:
|
||||
while count == 0 or not cur.endswith('Z'):
|
||||
|
||||
|
||||
count += 1
|
||||
|
||||
index = [(i,table.index(cur)) for i, table in enumerate(nmaps) if cur in table]
|
||||
|
||||
for j in index:
|
||||
if list(j)[1] == 0:
|
||||
index = list(j)[0]
|
||||
if cur_d[0] == 'R':
|
||||
cur = nmaps[index][2]
|
||||
if cur_d[0] == 'L':
|
||||
cur = nmaps[index][1]
|
||||
|
||||
|
||||
print(cur)
|
||||
|
||||
cur_d = cur_d[1:] + cur_d[0]
|
||||
|
||||
print(cur_d)
|
||||
input()
|
||||
|
||||
cycle.append(count)
|
||||
cycles.append(cycle)
|
||||
|
||||
|
||||
|
||||
print(cycles)
|
||||
|
||||
"""
|
||||
while found == False:
|
||||
i = d[count%len(d)]
|
||||
c = way
|
||||
index = [(i,table.index(c)) for i, table in enumerate(nmaps) if c in table]
|
||||
for j in index:
|
||||
if list(j)[1] == 0:
|
||||
index = list(j)[0]
|
||||
if i == 'R':
|
||||
way = nmaps[index][2]
|
||||
if i == 'L':
|
||||
way = nmaps[index][1]
|
||||
count += 1
|
||||
if way == 'ZZZ':
|
||||
found = True
|
||||
continue
|
||||
"""
|
||||
print('Result: ' + str(count))
|
Loading…
Reference in New Issue
Block a user