76 lines
1.1 KiB
Python
76 lines
1.1 KiB
Python
import networkx as nx
|
|
|
|
|
|
l = ["kh-tc",
|
|
"qp-kh",
|
|
"de-cg",
|
|
"ka-co",
|
|
"yn-aq",
|
|
"qp-ub",
|
|
"cg-tb",
|
|
"vc-aq",
|
|
"tb-ka",
|
|
"wh-tc",
|
|
"yn-cg",
|
|
"kh-ub",
|
|
"ta-co",
|
|
"de-co",
|
|
"tc-td",
|
|
"tb-wq",
|
|
"wh-td",
|
|
"ta-ka",
|
|
"td-qp",
|
|
"aq-cg",
|
|
"wq-ub",
|
|
"ub-vc",
|
|
"de-ta",
|
|
"wq-aq",
|
|
"wq-vc",
|
|
"wh-yn",
|
|
"ka-de",
|
|
"kh-ta",
|
|
"co-tc",
|
|
"wh-qp",
|
|
"tb-vc",
|
|
"td-yn"]
|
|
|
|
with open('day23.txt') as f:
|
|
l = f.read().splitlines()
|
|
|
|
# nodes = []
|
|
G = nx.Graph()
|
|
cycles = []
|
|
|
|
for line in l:
|
|
line = line.split("-")
|
|
for n in line:
|
|
if n not in list(G.nodes):
|
|
G.add_node(n)
|
|
G.add_edge(line[0],line[1])
|
|
print(list(G.nodes))
|
|
|
|
cnt = 0
|
|
largest = []
|
|
for c in nx.clique.enumerate_all_cliques(G):
|
|
# print(c)
|
|
if len(c)==3:
|
|
for comp in c:
|
|
# print(comp)
|
|
if comp[0] == "t":
|
|
# print("True")
|
|
cnt += 1
|
|
break
|
|
if len(c) > len(largest):
|
|
largest = c
|
|
print(cnt)
|
|
print(largest)
|
|
print(sorted(largest))
|
|
password = ""
|
|
for c in sorted(largest):
|
|
password = password+c+","
|
|
print(password)
|
|
|
|
|
|
|
|
|