65 lines
1.3 KiB
Python
65 lines
1.3 KiB
Python
|
import sys
|
||
|
import os
|
||
|
sys.path.insert(1, os.path.abspath('../../'))
|
||
|
from python_tools.aoc_utils import *
|
||
|
import collections as C
|
||
|
|
||
|
|
||
|
def part_one(g):
|
||
|
lan = set()
|
||
|
for i in g:
|
||
|
for key1 in g[i]:
|
||
|
for key2 in g[i]:
|
||
|
if key1 != key2:
|
||
|
if key2 in g[key1] and key1 in g[key2]:
|
||
|
pl = [i,key1, key2]
|
||
|
pl.sort()
|
||
|
lan.add(tuple(pl))
|
||
|
|
||
|
p1 = 0
|
||
|
for i in lan:
|
||
|
for j in i:
|
||
|
if j[0] == "t":
|
||
|
p1 += 1
|
||
|
break
|
||
|
print("P1: ", p1)
|
||
|
|
||
|
def part_two(g):
|
||
|
lan = set()
|
||
|
for i in g:
|
||
|
temp_lan = set([i])
|
||
|
for key1 in g[i]:
|
||
|
pc = True
|
||
|
for j in temp_lan:
|
||
|
if j not in g[key1]:
|
||
|
pc = False
|
||
|
if pc:
|
||
|
temp_lan.add(key1)
|
||
|
x = list(temp_lan)
|
||
|
x.sort()
|
||
|
lan.add(','.join(x))
|
||
|
|
||
|
p2 = 0
|
||
|
max_val = []
|
||
|
for i in lan:
|
||
|
if len(i) > p2:
|
||
|
p2 = len(i)
|
||
|
max_val = i
|
||
|
print("P2: ", max_val)
|
||
|
|
||
|
def main():
|
||
|
contents = file2list("input.txt")
|
||
|
|
||
|
g = C.defaultdict(set)
|
||
|
|
||
|
for i in contents:
|
||
|
x = i.split('-')
|
||
|
g[x[0]].add(x[1])
|
||
|
g[x[1]].add(x[0])
|
||
|
part_one(g)
|
||
|
part_two(g)
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|
||
|
|