From 86bac31392a76da84817eec020d2b84d099b3cc1 Mon Sep 17 00:00:00 2001 From: mhsn Date: Wed, 18 Mar 2026 21:48:13 +0000 Subject: add other challenges support --- 2025/05/python.py | 39 ---------------------------------- 2025/05/rust/Cargo.lock | 7 ------ 2025/05/rust/Cargo.toml | 6 ------ 2025/05/rust/src/main.rs | 55 ------------------------------------------------ 4 files changed, 107 deletions(-) delete mode 100755 2025/05/python.py delete mode 100644 2025/05/rust/Cargo.lock delete mode 100644 2025/05/rust/Cargo.toml delete mode 100644 2025/05/rust/src/main.rs (limited to '2025/05') diff --git a/2025/05/python.py b/2025/05/python.py deleted file mode 100755 index 9977623..0000000 --- a/2025/05/python.py +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env python3 - -from itertools import takewhile -from fileinput import input - - -inp = map(str.strip, input()) -rs = [tuple(map(int, r.split("-"))) for r in takewhile(bool, inp)] -ids = list(map(int, inp)) - - -def add(a: int, b: int, c: int, d: int) -> tuple[int, int] | None: - if c < a: - return add(c, d, a, b) - if b < c: - return None - return (a, max(b, d)) - - -done = False -while not done: - ms = [] - for r in rs: - for idx, m in enumerate(ms): - if new := add(*r, *m): - ms[idx] = new - break - - else: - ms.append(r) - done = len(rs) == len(ms) - rs = ms - - -silver = sum(1 for i in ids if any(lo <= i <= hi for lo, hi in rs)) -gold = sum(b - a + 1 for a, b in rs) - -print("silver:", silver) -print("gold:", gold) diff --git a/2025/05/rust/Cargo.lock b/2025/05/rust/Cargo.lock deleted file mode 100644 index 0d1bf4e..0000000 --- a/2025/05/rust/Cargo.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "aoc_2025-05" -version = "0.1.0" diff --git a/2025/05/rust/Cargo.toml b/2025/05/rust/Cargo.toml deleted file mode 100644 index e85826e..0000000 --- a/2025/05/rust/Cargo.toml +++ /dev/null @@ -1,6 +0,0 @@ -[package] -name = "aoc_2025-05" -version = "0.1.0" -edition = "2024" - -[dependencies] diff --git a/2025/05/rust/src/main.rs b/2025/05/rust/src/main.rs deleted file mode 100644 index cd78338..0000000 --- a/2025/05/rust/src/main.rs +++ /dev/null @@ -1,55 +0,0 @@ -use std::io; - -fn main() { - let mut input = io::stdin().lines().flatten().map(|line| line); - let ranges = input.by_ref().take_while(|s| !s.is_empty()).map(|s| { - let (lo, hi) = s.split_once('-').unwrap(); - ( - lo.to_owned().parse().unwrap(), - hi.to_owned().parse().unwrap(), - ) - }); - - let mut merged: Vec<(u64, u64)> = vec![]; - for (mut lo, mut hi) in ranges { - let ldx = merged.partition_point(|&(_, max)| max < lo); - let mut rdx = merged.partition_point(|&(_, max)| max < hi); - - let left = merged.get(ldx); - let right = merged.get(rdx); - - // ldx = merged.len() -> left is none -> insert at end - let Some(&(llo, lhi)) = left else { - merged.push((lo, hi)); - continue; - }; - - if (llo..=lhi).contains(&lo) { - lo = lo.min(llo); // include range start point - } - - // rdx = merged.len() -> right is none -> merge with all - let Some(&(rlo, rhi)) = right else { - merged.drain(ldx..); - merged.push((lo, hi)); - continue; - }; - - if (rlo..=rhi).contains(&hi) { - hi = hi.max(rhi); - rdx += 1; - } - - merged.drain(ldx..rdx); - merged.insert(ldx, (lo, hi)); - } - - let silver = input - .map(|n| n.parse::().unwrap()) - .filter(|id| merged.iter().any(|&(lo, hi)| (lo..=hi).contains(id))) - .count(); - let gold: u64 = merged.iter().map(|(lo, hi)| hi - lo + 1).sum(); - - println!("silver: {silver}"); - println!("gold: {gold}"); -} -- cgit v1.2.3