Add 2024 day 23
Diff
README | 4 ++--
treefmt.nix | 1 +
2024/23.py | 31 +++++++++++++++++++++++++++++++
3 files changed, 34 insertions(+), 2 deletions(-)
@@ -36,7 +36,7 @@
| 20 | Rust | | 20 | Haskell |
| 21 | Rust | | 21 | Rust |
| 22 | Rust | | 22 | Haskell |
+---------------------+ | 23 | Haskell |
| 24 | Haskell |
| 23 | Python | | 23 | Haskell |
+---------------------+ | 24 | Haskell |
| 25 | Bash |
+---------------------+
@@ -1,8 +1,9 @@
{ pkgs, ... }:
{
projectRootFile = "flake.nix";
programs = {
black.enable = true;
hlint.enable = true;
ormolu.enable = true;
nixpkgs-fmt.enable = true;
@@ -1,0 +1,31 @@
import sys
import networkx as nx
input = [line.strip().split("-") for line in sys.stdin]
nodes = set([node for pair in input for node in pair])
k_nodes = [node for node in nodes if node.startswith("t")]
G = nx.Graph()
G.add_nodes_from(nodes)
G.add_edges_from(input)
cliques = list(nx.enumerate_all_cliques(G))
part1 = 0
for clique in cliques:
if len(clique) < 3:
continue
elif len(clique) > 3:
break
elif any(node in k_nodes for node in clique):
part1 += 1
print(part1)
part2 = ",".join(sorted(cliques[-1]))
print(part2)