diff --git a/README.md b/README.md index d964f08..a326bb2 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,2 @@ -# aoc - -Advent of Code - solutions in Rust \ No newline at end of file +# Advent of Code +My attempt to these festival coding challenges. Written in Rust. diff --git a/src/aoc2021/day02/input.txt b/src/aoc2021/day02/input.txt new file mode 100644 index 0000000..3d281b2 --- /dev/null +++ b/src/aoc2021/day02/input.txt @@ -0,0 +1,1000 @@ +forward 7 +down 2 +forward 7 +down 6 +forward 1 +forward 7 +down 3 +up 5 +forward 7 +forward 6 +down 8 +down 1 +up 5 +up 1 +down 2 +forward 8 +forward 3 +down 8 +down 9 +down 1 +forward 4 +down 8 +down 7 +forward 3 +up 5 +up 3 +forward 9 +forward 5 +forward 5 +down 9 +up 2 +down 4 +up 4 +down 9 +forward 7 +down 9 +up 7 +forward 4 +down 2 +down 6 +up 3 +down 2 +down 4 +up 5 +forward 7 +up 8 +down 4 +forward 8 +down 5 +forward 1 +forward 3 +up 9 +forward 5 +down 4 +forward 6 +forward 2 +up 3 +down 5 +down 6 +forward 8 +up 6 +up 9 +down 8 +down 2 +down 6 +forward 2 +forward 8 +forward 1 +forward 5 +forward 3 +down 8 +down 5 +forward 3 +up 7 +down 9 +up 9 +forward 7 +forward 6 +forward 4 +down 5 +forward 1 +down 9 +forward 9 +forward 6 +down 8 +down 5 +forward 5 +forward 4 +forward 3 +up 6 +up 7 +forward 2 +up 2 +up 9 +forward 8 +up 3 +forward 8 +down 8 +forward 1 +forward 7 +forward 4 +down 5 +forward 8 +down 2 +down 2 +down 3 +forward 3 +forward 3 +up 3 +forward 4 +up 9 +up 8 +forward 1 +down 8 +up 6 +down 5 +up 3 +up 2 +forward 1 +up 8 +down 7 +up 5 +down 2 +forward 5 +down 3 +down 1 +forward 2 +forward 6 +forward 7 +forward 1 +forward 5 +forward 4 +down 9 +forward 6 +down 9 +up 8 +forward 9 +forward 5 +up 2 +up 7 +up 2 +down 1 +down 7 +down 1 +forward 2 +down 8 +down 3 +forward 1 +down 5 +forward 7 +forward 5 +forward 6 +up 6 +forward 6 +forward 1 +down 2 +forward 5 +down 7 +up 1 +down 5 +down 4 +down 8 +up 2 +down 2 +up 6 +forward 2 +down 2 +up 9 +down 7 +down 3 +down 6 +forward 5 +up 5 +forward 2 +forward 7 +down 9 +up 3 +forward 4 +forward 4 +down 6 +down 2 +down 4 +forward 6 +down 2 +down 8 +up 2 +forward 9 +down 8 +forward 4 +down 2 +up 4 +down 6 +forward 3 +forward 2 +forward 7 +down 7 +forward 3 +forward 7 +down 9 +up 6 +down 4 +forward 4 +down 6 +down 8 +down 4 +forward 3 +up 5 +up 4 +up 9 +forward 9 +down 1 +forward 3 +forward 9 +up 3 +down 5 +forward 2 +down 9 +down 9 +forward 1 +forward 4 +forward 8 +forward 9 +down 4 +forward 3 +down 3 +forward 9 +down 1 +down 3 +down 9 +down 3 +down 2 +down 1 +up 2 +down 3 +up 7 +forward 7 +down 9 +up 6 +down 1 +down 7 +down 7 +up 7 +forward 8 +down 1 +down 7 +down 8 +up 4 +down 6 +down 7 +forward 5 +down 9 +forward 2 +down 6 +down 8 +down 5 +down 4 +forward 8 +down 4 +forward 8 +down 3 +down 6 +forward 6 +forward 1 +up 5 +down 2 +down 2 +forward 7 +forward 1 +up 3 +down 6 +down 3 +down 9 +up 6 +forward 4 +down 1 +forward 4 +up 3 +forward 6 +down 7 +down 2 +up 3 +down 1 +up 7 +down 7 +forward 5 +up 9 +up 1 +up 2 +forward 4 +forward 9 +up 3 +down 8 +up 2 +down 9 +forward 8 +up 2 +down 5 +up 5 +down 2 +up 8 +down 6 +down 8 +up 7 +forward 9 +forward 6 +forward 5 +forward 8 +forward 7 +down 2 +forward 1 +forward 6 +down 3 +down 7 +up 1 +forward 7 +up 7 +down 2 +down 9 +up 4 +forward 2 +down 3 +up 8 +up 3 +down 9 +down 2 +forward 4 +forward 9 +forward 8 +forward 2 +up 2 +forward 3 +forward 8 +down 2 +down 4 +up 8 +up 2 +forward 4 +forward 7 +up 8 +forward 8 +forward 1 +forward 9 +down 9 +up 3 +forward 9 +down 5 +down 9 +down 2 +forward 1 +forward 6 +forward 3 +up 7 +down 8 +down 2 +up 6 +down 5 +forward 4 +up 7 +down 5 +down 3 +forward 5 +forward 5 +up 4 +down 7 +down 5 +up 1 +down 4 +down 6 +forward 6 +forward 3 +down 9 +forward 6 +forward 4 +down 8 +up 5 +down 7 +forward 6 +forward 7 +down 9 +forward 3 +forward 3 +forward 4 +down 6 +forward 2 +forward 9 +up 2 +forward 7 +up 5 +forward 6 +down 8 +down 7 +forward 1 +down 6 +forward 3 +down 9 +forward 7 +forward 2 +forward 1 +down 9 +down 2 +up 8 +down 1 +down 3 +up 6 +down 5 +up 2 +down 2 +down 8 +forward 7 +down 8 +forward 6 +up 5 +down 8 +down 4 +down 1 +forward 1 +forward 9 +down 3 +forward 9 +up 2 +down 2 +forward 9 +up 2 +up 2 +down 8 +down 1 +up 4 +down 9 +down 6 +up 7 +down 6 +forward 7 +forward 3 +forward 9 +forward 2 +down 9 +down 8 +down 5 +forward 4 +forward 1 +forward 3 +forward 3 +forward 1 +forward 6 +forward 7 +down 7 +down 1 +up 4 +up 2 +forward 9 +up 7 +down 1 +forward 5 +down 8 +forward 3 +down 9 +up 4 +up 1 +forward 7 +down 1 +forward 4 +up 6 +down 9 +forward 2 +forward 7 +down 1 +forward 2 +forward 1 +down 2 +forward 6 +down 4 +up 7 +down 6 +forward 1 +down 9 +up 8 +up 6 +forward 4 +down 5 +up 8 +down 5 +up 9 +forward 1 +forward 6 +down 4 +up 5 +forward 4 +forward 2 +down 6 +forward 9 +down 7 +down 2 +forward 1 +up 2 +forward 4 +forward 4 +forward 7 +down 5 +up 1 +down 7 +down 1 +forward 3 +forward 6 +forward 7 +down 5 +down 4 +down 2 +down 3 +up 3 +forward 7 +down 3 +up 2 +forward 7 +down 9 +up 4 +forward 9 +forward 4 +forward 2 +down 9 +forward 1 +down 5 +forward 3 +forward 5 +up 7 +down 9 +up 7 +down 5 +down 2 +up 5 +up 1 +forward 8 +forward 3 +up 5 +forward 2 +down 2 +forward 5 +forward 3 +forward 4 +up 4 +forward 3 +up 4 +forward 1 +down 2 +forward 5 +down 9 +forward 8 +forward 2 +forward 5 +forward 1 +up 3 +up 8 +forward 2 +forward 9 +down 7 +up 5 +up 2 +forward 1 +forward 4 +up 4 +forward 5 +down 5 +forward 5 +down 2 +down 8 +forward 4 +down 3 +forward 7 +down 7 +forward 6 +down 9 +down 2 +up 4 +up 5 +down 2 +down 7 +forward 3 +down 1 +down 5 +down 6 +forward 8 +forward 7 +down 3 +forward 4 +forward 8 +forward 2 +down 8 +down 3 +forward 8 +down 2 +up 2 +forward 3 +up 2 +down 7 +down 4 +forward 8 +forward 7 +down 9 +forward 7 +down 8 +up 3 +forward 1 +up 5 +forward 6 +down 7 +forward 8 +forward 3 +forward 1 +forward 5 +down 8 +up 8 +forward 9 +down 7 +up 8 +up 8 +forward 9 +up 6 +forward 2 +down 8 +forward 6 +down 6 +down 6 +forward 8 +up 9 +forward 9 +down 8 +down 8 +forward 3 +forward 3 +down 8 +up 7 +down 1 +forward 5 +up 6 +forward 6 +up 8 +down 7 +down 3 +down 4 +forward 7 +down 2 +forward 4 +forward 6 +down 2 +down 6 +up 2 +down 9 +down 8 +forward 6 +up 8 +up 4 +forward 1 +forward 2 +down 8 +forward 6 +down 2 +down 7 +down 1 +down 2 +forward 9 +forward 5 +down 2 +down 8 +down 9 +up 6 +forward 6 +up 2 +down 9 +down 4 +down 9 +up 7 +forward 2 +up 9 +down 7 +forward 2 +down 7 +up 6 +down 3 +up 1 +down 8 +down 4 +forward 1 +up 5 +up 4 +down 2 +down 8 +forward 8 +forward 7 +up 1 +down 8 +forward 2 +forward 7 +down 4 +forward 4 +down 3 +down 7 +forward 8 +down 7 +down 3 +down 3 +forward 8 +forward 8 +up 1 +forward 8 +forward 6 +down 9 +up 1 +down 7 +down 7 +forward 7 +forward 7 +up 5 +down 7 +down 6 +down 6 +forward 8 +down 3 +forward 8 +down 8 +forward 7 +forward 2 +up 6 +down 6 +down 8 +forward 1 +forward 8 +down 9 +down 7 +up 5 +down 1 +forward 6 +down 9 +forward 5 +up 2 +up 9 +down 6 +down 8 +down 6 +up 1 +forward 7 +down 9 +up 2 +forward 3 +down 7 +up 5 +forward 3 +forward 8 +up 2 +forward 1 +down 6 +down 7 +up 4 +down 5 +up 8 +forward 9 +forward 5 +up 7 +down 3 +forward 2 +up 7 +up 2 +down 3 +up 9 +down 9 +down 8 +up 8 +down 6 +forward 9 +up 7 +forward 4 +forward 7 +up 7 +down 6 +forward 5 +up 2 +up 4 +down 1 +down 2 +down 9 +forward 5 +forward 3 +forward 9 +up 7 +forward 7 +down 5 +down 2 +up 9 +forward 4 +forward 4 +up 5 +up 3 +forward 5 +forward 9 +forward 4 +forward 8 +down 2 +up 4 +down 1 +forward 9 +forward 9 +up 7 +down 3 +forward 2 +forward 4 +down 6 +up 1 +forward 6 +down 4 +up 9 +down 4 +forward 3 +down 9 +up 9 +down 8 +up 6 +forward 9 +forward 1 +forward 2 +up 2 +forward 8 +forward 9 +forward 3 +forward 5 +down 5 +down 7 +forward 7 +forward 5 +down 3 +up 2 +forward 4 +down 3 +up 6 +down 6 +up 6 +forward 1 +forward 2 +down 5 +down 8 +down 3 +forward 5 +up 4 +forward 6 +forward 9 +forward 6 +forward 1 +forward 4 +up 1 +forward 3 +forward 3 +up 3 +forward 9 +forward 1 +forward 7 +forward 8 +forward 1 +forward 9 +forward 7 +up 9 +forward 9 +up 4 +down 4 +up 9 +down 5 +down 8 +down 3 +forward 6 +down 7 +forward 5 +forward 6 +forward 8 +forward 7 +down 7 +down 5 +forward 4 +down 6 +down 4 +down 6 +down 1 +forward 3 +down 3 +down 7 +forward 6 +forward 3 +up 2 +forward 1 +forward 8 +down 9 +down 3 +down 3 +up 6 +down 7 +down 3 +forward 2 +down 7 +down 2 +forward 1 +down 7 +down 3 +forward 9 +down 4 +down 3 +forward 9 +up 2 +up 4 +forward 4 +down 4 +up 2 +down 2 +forward 8 +down 1 +up 9 +down 5 +down 7 +forward 3 +forward 9 +forward 7 +forward 1 +forward 7 +forward 1 +forward 7 +up 7 +down 6 +forward 6 +forward 4 +forward 6 +up 3 +down 5 +down 5 +down 3 +down 6 +down 3 +down 3 +up 2 +down 4 +up 8 +down 4 +up 2 +down 7 +forward 9 +up 9 +down 1 +forward 8 +forward 7 +forward 6 +forward 8 +up 6 +up 6 +down 5 +forward 6 +down 3 +forward 6 +forward 9 +down 2 +down 6 +down 4 +down 5 +forward 7 +forward 4 +up 3 +down 6 +down 6 +forward 1 +forward 4 +down 6 +up 3 +forward 1 +down 3 +down 7 +down 4 +down 8 +down 8 +up 8 +down 2 +up 8 +down 3 +down 3 +forward 3 +down 3 +down 7 +up 6 +forward 8 +down 4 +forward 1 +down 7 +down 3 +forward 5 +forward 8 +up 1 +forward 2 +down 7 +down 7 +forward 1 +up 7 +down 3 +up 3 +forward 5 +forward 9 +down 3 +down 7 +down 5 +forward 7 diff --git a/src/aoc2021/day02/mod.rs b/src/aoc2021/day02/mod.rs new file mode 100644 index 0000000..dc96574 --- /dev/null +++ b/src/aoc2021/day02/mod.rs @@ -0,0 +1,41 @@ +pub fn task_one(input: &str) -> String { + let mut horizontal_pos: usize = 0; + let mut depth: usize = 0; + + for line in input.lines() { + let split = line.split_once(' ').unwrap(); + let amount = split.1.trim().parse::().unwrap(); + + match split.0 { + "forward" => horizontal_pos = horizontal_pos + amount, + "down" => depth = depth + amount, + "up" => depth = depth - amount, + _ => panic!() + } + } + + return (horizontal_pos * depth).to_string(); +} + +pub fn task_two(input: &str) -> String { + let mut horizontal_pos: usize = 0; + let mut depth: usize = 0; + let mut aim: usize = 0; + + for line in input.lines() { + let split = line.split_once(' ').unwrap(); + let amount = split.1.trim().parse::().unwrap(); + + match split.0 { + "forward" => { + horizontal_pos = horizontal_pos + amount; + depth = depth + aim * amount; + }, + "down" => aim = aim + amount, + "up" => aim = aim - amount, + _ => panic!() + } + } + + return (horizontal_pos * depth).to_string(); +} diff --git a/src/aoc2021/mod.rs b/src/aoc2021/mod.rs index 12b8f18..28326d5 100644 --- a/src/aoc2021/mod.rs +++ b/src/aoc2021/mod.rs @@ -1 +1,2 @@ pub mod day01; +pub mod day02; diff --git a/src/main.rs b/src/main.rs index 4f172c4..1ee4733 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,5 +7,10 @@ fn main() { let input_day01 = fs::read_to_string("src/aoc2021/day01/input.txt").expect("Error on reading file."); let result_day01_task1 = aoc2021::day01::task_one(&input_day01); let result_day01_task2 = aoc2021::day01::task_two(&input_day01); - println!("AOC2021 Day 01 \t Task 1: {}, Task 2: {}", result_day01_task1, result_day01_task2); + println!("AOC2021 Day 01 \t Task 1: {},\t\tTask 2: {}", result_day01_task1, result_day01_task2); + + let input_day02 = fs::read_to_string("src/aoc2021/day02/input.txt").expect("Error on reading file."); + let result_day02_task1 = aoc2021::day02::task_one(&input_day02); + let result_day02_task2 = aoc2021::day02::task_two(&input_day02); + println!("AOC2021 Day 02 \t Task 1: {},\tTask 2: {}", result_day02_task1, result_day02_task2); }