From 9ecb37b48d5c65cf3cb2b1eb8db1b2a5b02142d2 Mon Sep 17 00:00:00 2001 From: gbrochar Date: Sat, 7 Jan 2023 09:45:40 +0100 Subject: [PATCH] day 10 --- aoc_10a/.gitignore | 12 ++++ aoc_10a/Cargo.toml | 8 +++ aoc_10a/input | 139 +++++++++++++++++++++++++++++++++++++++++ aoc_10a/input2 | 146 ++++++++++++++++++++++++++++++++++++++++++++ aoc_10a/src/main.rs | 50 +++++++++++++++ aoc_10b/.gitignore | 12 ++++ aoc_10b/Cargo.toml | 8 +++ aoc_10b/src/main.rs | 52 ++++++++++++++++ 8 files changed, 427 insertions(+) create mode 100644 aoc_10a/.gitignore create mode 100644 aoc_10a/Cargo.toml create mode 100644 aoc_10a/input create mode 100644 aoc_10a/input2 create mode 100644 aoc_10a/src/main.rs create mode 100644 aoc_10b/.gitignore create mode 100644 aoc_10b/Cargo.toml create mode 100644 aoc_10b/src/main.rs diff --git a/aoc_10a/.gitignore b/aoc_10a/.gitignore new file mode 100644 index 0000000..62bd1a4 --- /dev/null +++ b/aoc_10a/.gitignore @@ -0,0 +1,12 @@ +# ---> Rust +# Generated by Cargo +# will have compiled files and executables +/target/ + +# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries +# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html +Cargo.lock + +# These are backup files generated by rustfmt +**/*.rs.bk + diff --git a/aoc_10a/Cargo.toml b/aoc_10a/Cargo.toml new file mode 100644 index 0000000..47fbb70 --- /dev/null +++ b/aoc_10a/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "aoc_10a" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/aoc_10a/input b/aoc_10a/input new file mode 100644 index 0000000..dafc4c9 --- /dev/null +++ b/aoc_10a/input @@ -0,0 +1,139 @@ +addx 2 +addx 3 +addx -2 +addx 3 +noop +addx 6 +addx -1 +addx 4 +addx 1 +noop +addx 3 +addx 1 +addx 7 +noop +noop +addx -1 +addx 3 +addx 2 +noop +addx 4 +addx 2 +addx -25 +addx -7 +addx -4 +addx 2 +addx 2 +addx 19 +addx -8 +addx -5 +addx 2 +addx -9 +addx 16 +addx 3 +addx -2 +addx 12 +addx -5 +addx 2 +addx -15 +noop +noop +noop +addx 5 +addx 16 +addx -22 +addx -14 +addx 5 +noop +addx 29 +noop +noop +noop +addx -21 +addx 2 +noop +noop +addx 5 +addx -1 +addx 1 +noop +noop +addx 8 +addx -2 +addx 4 +noop +addx -22 +addx 29 +noop +addx -36 +noop +addx -2 +addx 6 +addx -2 +addx 2 +noop +noop +noop +addx 8 +addx 2 +addx 10 +noop +addx -5 +addx 3 +addx -2 +addx 9 +addx -2 +addx 2 +addx -21 +addx 10 +addx 17 +addx -38 +noop +noop +noop +addx 34 +addx -27 +addx 2 +addx -6 +addx 7 +addx 5 +addx 2 +addx 5 +noop +noop +noop +addx 3 +addx -2 +addx 2 +addx 5 +addx 2 +addx -29 +addx 35 +addx -3 +addx -25 +addx -8 +addx 1 +noop +addx 4 +addx 3 +addx -2 +addx 5 +noop +addx 8 +addx -6 +noop +addx -3 +addx 10 +noop +noop +addx 6 +addx -1 +addx -18 +addx 21 +addx -30 +addx 37 +addx 1 +noop +noop +noop +noop \ No newline at end of file diff --git a/aoc_10a/input2 b/aoc_10a/input2 new file mode 100644 index 0000000..94cd0a8 --- /dev/null +++ b/aoc_10a/input2 @@ -0,0 +1,146 @@ +addx 15 +addx -11 +addx 6 +addx -3 +addx 5 +addx -1 +addx -8 +addx 13 +addx 4 +noop +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx -35 +addx 1 +addx 24 +addx -19 +addx 1 +addx 16 +addx -11 +noop +noop +addx 21 +addx -15 +noop +noop +addx -3 +addx 9 +addx 1 +addx -3 +addx 8 +addx 1 +addx 5 +noop +noop +noop +noop +noop +addx -36 +noop +addx 1 +addx 7 +noop +noop +noop +addx 2 +addx 6 +noop +noop +noop +noop +noop +addx 1 +noop +noop +addx 7 +addx 1 +noop +addx -13 +addx 13 +addx 7 +noop +addx 1 +addx -33 +noop +noop +noop +addx 2 +noop +noop +noop +addx 8 +noop +addx -1 +addx 2 +addx 1 +noop +addx 17 +addx -9 +addx 1 +addx 1 +addx -3 +addx 11 +noop +noop +addx 1 +noop +addx 1 +noop +noop +addx -13 +addx -19 +addx 1 +addx 3 +addx 26 +addx -30 +addx 12 +addx -1 +addx 3 +addx 1 +noop +noop +noop +addx -9 +addx 18 +addx 1 +addx 2 +noop +noop +addx 9 +noop +noop +noop +addx -1 +addx 2 +addx -37 +addx 1 +addx 3 +noop +addx 15 +addx -21 +addx 22 +addx -6 +addx 1 +noop +addx 2 +addx 1 +noop +addx -10 +noop +noop +addx 20 +addx 1 +addx 2 +addx 2 +addx -6 +addx -11 +noop +noop +noop \ No newline at end of file diff --git a/aoc_10a/src/main.rs b/aoc_10a/src/main.rs new file mode 100644 index 0000000..71657d6 --- /dev/null +++ b/aoc_10a/src/main.rs @@ -0,0 +1,50 @@ +use std::fs::File; +use std::io::{self, BufRead}; +use std::path::Path; + +fn update_signal(cycle: i32, register: i32, signal: i32) -> i32 { + match cycle % 40 { + 20 => signal + register * cycle, + _ => signal + } +} + +fn main() { + let file_path = String::from("input"); + let mut cycle: i32 = 0; + let mut register: i32 = 1; + let mut signal: i32 = 0; + + println!("In file {}", file_path); + + if let Ok(lines) = read_lines(file_path) { + // Consumes the iterator, returns an (Optional) String + for line in lines { + if let Ok(ip) = line { + let split: Vec<&str> = ip.split(" ").collect(); + let v = split.get(1).unwrap_or(&"").parse::(); + match v { + Ok(n) => { + cycle += 1; + signal = update_signal(cycle, register, signal); + cycle += 1; + signal = update_signal(cycle, register, signal); + register += n; + }, + Err(_) => { + cycle += 1; + signal = update_signal(cycle, register, signal); + }, + } + } + } + } + + println!("signal {}", signal); +} + +fn read_lines

(filename: P) -> io::Result>> +where P: AsRef, { + let file = File::open(filename)?; + Ok(io::BufReader::new(file).lines()) +} diff --git a/aoc_10b/.gitignore b/aoc_10b/.gitignore new file mode 100644 index 0000000..62bd1a4 --- /dev/null +++ b/aoc_10b/.gitignore @@ -0,0 +1,12 @@ +# ---> Rust +# Generated by Cargo +# will have compiled files and executables +/target/ + +# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries +# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html +Cargo.lock + +# These are backup files generated by rustfmt +**/*.rs.bk + diff --git a/aoc_10b/Cargo.toml b/aoc_10b/Cargo.toml new file mode 100644 index 0000000..f80be60 --- /dev/null +++ b/aoc_10b/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "aoc_10b" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/aoc_10b/src/main.rs b/aoc_10b/src/main.rs new file mode 100644 index 0000000..0ba19b9 --- /dev/null +++ b/aoc_10b/src/main.rs @@ -0,0 +1,52 @@ +use std::fs::File; +use std::io::{self, BufRead}; +use std::path::Path; + +fn update_crt(cycle: i32, register: i32) { + let m = cycle % 40; + if m - register >= 0 && m - register <= 2 { + print!("#"); + } else { + print!("."); + } + if m == 0 { + println!(""); + } +} + +fn main() { + let file_path = String::from("../aoc_10a/input"); + let mut cycle: i32 = 0; + let mut register: i32 = 1; + + println!("In file {}", file_path); + + if let Ok(lines) = read_lines(file_path) { + // Consumes the iterator, returns an (Optional) String + for line in lines { + if let Ok(ip) = line { + let split: Vec<&str> = ip.split(" ").collect(); + let v = split.get(1).unwrap_or(&"").parse::(); + match v { + Ok(n) => { + cycle += 1; + update_crt(cycle, register); + cycle += 1; + update_crt(cycle, register); + register += n; + }, + Err(_) => { + cycle += 1; + update_crt(cycle, register); + }, + } + } + } + } +} + +fn read_lines

(filename: P) -> io::Result>> +where P: AsRef, { + let file = File::open(filename)?; + Ok(io::BufReader::new(file).lines()) +}