summaryrefslogtreecommitdiff
path: root/2024/03/rust
diff options
context:
space:
mode:
authormhsn <mail@mhsn.net>2026-03-18 21:48:13 +0000
committermhsn <mail@mhsn.net>2026-03-18 21:48:13 +0000
commit86bac31392a76da84817eec020d2b84d099b3cc1 (patch)
treee2ee52db59b86b914d5b4bcceb19c9b5d899fff4 /2024/03/rust
parent62fe361fc42dea75deaf7ac31c0ba6ba80e26a9c (diff)
downloadpuzzles-master.tar.gz
puzzles-master.zip
add other challenges supportHEADmaster
Diffstat (limited to '2024/03/rust')
-rw-r--r--2024/03/rust/Cargo.lock7
-rw-r--r--2024/03/rust/Cargo.toml4
-rw-r--r--2024/03/rust/src/main.rs68
3 files changed, 0 insertions, 79 deletions
diff --git a/2024/03/rust/Cargo.lock b/2024/03/rust/Cargo.lock
deleted file mode 100644
index a7a6f57..0000000
--- a/2024/03/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_2024-03"
-version = "0.1.0"
diff --git a/2024/03/rust/Cargo.toml b/2024/03/rust/Cargo.toml
deleted file mode 100644
index 97ec307..0000000
--- a/2024/03/rust/Cargo.toml
+++ /dev/null
@@ -1,4 +0,0 @@
-[package]
-name = "aoc_2024-03"
-version = "0.1.0"
-edition = "2021"
diff --git a/2024/03/rust/src/main.rs b/2024/03/rust/src/main.rs
deleted file mode 100644
index b268463..0000000
--- a/2024/03/rust/src/main.rs
+++ /dev/null
@@ -1,68 +0,0 @@
-use std::io::{self, Read};
-
-#[derive(Debug)]
-enum Instruction {
- Do,
- Dont,
- Mul(u64, u64),
-}
-
-impl From<&Instruction> for u64 {
- fn from(val: &Instruction) -> Self {
- match val {
- Instruction::Mul(x, y) => x * y,
- _ => 0,
- }
- }
-}
-
-fn main() -> io::Result<()> {
- let mut program = String::new();
- io::stdin().read_to_string(&mut program)?;
-
- let instrs = (0..program.len())
- .filter_map(|idx| {
- let next = &program[idx..];
- if next.starts_with("do()") {
- Some(Instruction::Do)
- } else if next.starts_with("don't()") {
- Some(Instruction::Dont)
- } else if next.starts_with("mul(") {
- let mut first = 0;
- let mut curr = 0;
-
- for ch in next.bytes().skip(4) {
- match (ch, curr) {
- ((b'0'..=b'9'), _) => curr = curr * 10 + (ch - b'0') as u64,
- (_, 0) => return None,
- (b',', _) => {
- first = curr;
- curr = 0;
- }
- (b')', _) => {
- return Some(Instruction::Mul(first, curr));
- }
- _ => return None,
- };
- }
- None
- } else {
- None
- }
- })
- .collect::<Vec<_>>();
-
- let silver: u64 = instrs.iter().map(u64::from).sum();
- let (gold, _) = instrs
- .iter()
- .fold((0 as u64, true), |(acc, on), instr| match (instr, on) {
- (Instruction::Do, _) => (acc, true),
- (Instruction::Dont, _) => (acc, false),
- (Instruction::Mul(_, _), true) => (acc + u64::from(instr), true),
- _ => (acc, on),
- });
- println!("silver: {silver}");
- println!("gold: {gold}");
-
- return Ok(());
-}