From 47b8fbbdd150f54c527f560e2b7c54a5b2f2c5aa Mon Sep 17 00:00:00 2001 From: Jordan Doyle Date: Sun, 29 Dec 2024 21:27:02 +0700 Subject: [PATCH] Add 2024 day 23 --- README | 4 ++-- treefmt.nix | 1 + 2024/23.py | 31 +++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/README b/README index 408ff2e..fc532e3 100644 --- a/README +++ a/README @@ -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 | +---------------------+ diff --git a/treefmt.nix b/treefmt.nix index eaf485c..900aa61 100644 --- a/treefmt.nix +++ a/treefmt.nix @@ -1,8 +1,9 @@ { pkgs, ... }: { projectRootFile = "flake.nix"; programs = { + black.enable = true; hlint.enable = true; ormolu.enable = true; nixpkgs-fmt.enable = true; diff --git a/2024/23.py b/2024/23.py new file mode 100755 index 0000000..d768cda 100755 --- /dev/null +++ a/2024/23.py @@ -1,0 +1,31 @@ +#! /usr/bin/env nix-shell +#! nix-shell -i python3 -p python3Packages.pillow python3Packages.networkx + +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) -- rgit 0.1.5