From 677e28a60a3a3407936ec1771c5dde01bf89e659 Mon Sep 17 00:00:00 2001 From: Philippe Zwietering Date: Sat, 11 Dec 2021 23:35:07 +0100 Subject: [PATCH] Finished day 2 of advent of code with rust --- advent_of_code/2.rs | 41 ++ advent_of_code/2.txt | 1000 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1041 insertions(+) create mode 100644 advent_of_code/2.rs create mode 100644 advent_of_code/2.txt diff --git a/advent_of_code/2.rs b/advent_of_code/2.rs new file mode 100644 index 0000000..f8b800b --- /dev/null +++ b/advent_of_code/2.rs @@ -0,0 +1,41 @@ +use std::io::{self, BufRead}; +use std::path::Path; +use std::fs::File; + +fn main(){ + println!("Advent of Code #2!\n"); + + let path = Path::new("./2.txt"); + let display = path.display(); + + let file = match File::open(&path) { + Err(why) => panic!("Couldn't open {}: {}", display, why), + Ok(file) => file, + }; + + let lines = io::BufReader::new(file).lines(); + let mut instructions = Vec::<(String, u32)>::new(); + + for line in lines { + if let Ok(l) = line { + let mut words_iter = l.split_whitespace(); + let direction = words_iter.next().unwrap().to_string(); + let distance = words_iter.next().unwrap().parse::().unwrap(); + + instructions.push((direction, distance)); + } + } + + let mut depth = 0; + let mut position = 0; + for (direction, distance) in instructions { + match direction.as_str() { + "forward" => position += distance, + "up" => depth -= distance, + "down" => depth += distance, + s => println!("Stumbled upon unknown input: {}", s), + } + } + + println!("Position of {} * depth of {} equals {}", position, depth, position * depth); +} \ No newline at end of file diff --git a/advent_of_code/2.txt b/advent_of_code/2.txt new file mode 100644 index 0000000..2b7df68 --- /dev/null +++ b/advent_of_code/2.txt @@ -0,0 +1,1000 @@ +forward 4 +down 9 +forward 2 +forward 2 +down 7 +up 2 +down 9 +up 8 +down 7 +down 9 +forward 4 +up 6 +down 2 +down 5 +down 1 +down 5 +forward 2 +up 4 +forward 2 +forward 3 +up 2 +forward 6 +up 8 +forward 8 +down 8 +up 8 +down 7 +down 2 +down 9 +forward 2 +forward 9 +down 4 +forward 8 +up 6 +down 3 +up 9 +forward 1 +forward 6 +up 3 +forward 8 +up 9 +forward 1 +down 9 +down 3 +down 7 +up 2 +up 7 +down 5 +forward 3 +down 1 +up 6 +down 2 +forward 4 +down 6 +down 8 +forward 2 +down 5 +forward 6 +down 5 +down 7 +forward 8 +forward 2 +down 9 +up 4 +forward 6 +forward 4 +up 6 +down 9 +down 7 +down 9 +forward 9 +forward 8 +down 7 +up 7 +forward 9 +forward 8 +up 1 +up 4 +down 3 +forward 6 +up 6 +down 2 +up 3 +down 6 +down 5 +forward 8 +forward 3 +forward 8 +down 4 +down 4 +down 5 +forward 6 +down 5 +forward 6 +down 2 +down 5 +up 4 +down 8 +up 5 +forward 5 +forward 6 +down 9 +up 5 +down 2 +forward 5 +down 7 +up 7 +down 9 +forward 2 +down 3 +down 3 +forward 8 +up 5 +up 1 +forward 1 +forward 3 +down 5 +forward 8 +forward 7 +forward 8 +down 5 +down 8 +up 2 +forward 8 +forward 8 +down 7 +forward 1 +forward 7 +down 6 +up 4 +forward 7 +forward 7 +down 3 +up 7 +forward 2 +down 7 +down 4 +forward 5 +down 8 +forward 9 +down 7 +forward 5 +up 6 +up 6 +down 8 +down 3 +forward 5 +forward 3 +down 8 +up 7 +forward 8 +up 6 +down 2 +forward 4 +up 3 +up 3 +down 9 +down 9 +up 1 +up 7 +forward 2 +down 1 +forward 9 +up 7 +up 6 +down 2 +down 3 +forward 4 +down 3 +down 3 +down 1 +forward 4 +forward 8 +forward 6 +forward 3 +up 4 +up 5 +up 4 +forward 1 +up 3 +down 9 +up 6 +forward 2 +down 5 +down 1 +forward 8 +forward 2 +down 6 +up 5 +up 3 +forward 7 +forward 2 +forward 7 +up 9 +forward 3 +up 9 +forward 1 +down 9 +forward 9 +down 3 +down 3 +down 2 +forward 9 +forward 2 +up 3 +forward 3 +down 7 +down 3 +forward 2 +forward 1 +forward 6 +up 9 +forward 4 +down 9 +down 8 +up 3 +up 5 +forward 8 +down 9 +forward 5 +forward 4 +down 5 +up 4 +forward 7 +forward 3 +down 9 +forward 7 +down 2 +down 7 +forward 3 +up 3 +forward 7 +down 9 +down 4 +down 8 +forward 8 +down 6 +forward 9 +forward 4 +up 9 +down 9 +down 6 +up 7 +up 2 +forward 2 +forward 7 +down 7 +forward 9 +down 6 +down 2 +forward 4 +forward 8 +down 4 +forward 4 +forward 4 +forward 6 +up 6 +down 9 +down 3 +down 7 +up 2 +up 2 +forward 4 +down 4 +forward 6 +down 2 +down 2 +forward 1 +down 1 +forward 7 +up 5 +forward 9 +forward 8 +down 4 +forward 8 +down 5 +up 4 +down 8 +forward 4 +forward 7 +down 9 +down 3 +forward 6 +down 6 +forward 6 +down 9 +down 6 +forward 5 +forward 5 +up 9 +down 9 +down 9 +down 1 +down 5 +forward 5 +down 7 +forward 3 +down 6 +forward 5 +forward 8 +down 6 +forward 7 +down 5 +forward 4 +down 4 +down 9 +forward 3 +down 9 +down 9 +down 1 +up 7 +forward 4 +up 1 +up 1 +forward 1 +down 9 +up 8 +down 8 +down 3 +down 7 +forward 4 +down 5 +down 5 +forward 7 +forward 7 +forward 6 +up 2 +down 4 +forward 8 +forward 3 +forward 3 +forward 2 +forward 4 +up 9 +up 1 +forward 2 +forward 2 +forward 6 +down 9 +up 8 +forward 4 +forward 5 +forward 4 +down 4 +down 8 +forward 6 +down 8 +forward 9 +forward 8 +down 1 +down 2 +forward 2 +up 4 +up 7 +forward 5 +down 7 +down 5 +down 3 +up 7 +down 4 +forward 8 +up 8 +down 1 +down 2 +up 6 +up 8 +forward 9 +down 5 +down 2 +forward 5 +forward 4 +up 6 +forward 7 +down 3 +up 5 +up 9 +forward 5 +forward 1 +down 6 +down 7 +forward 9 +down 8 +down 2 +forward 9 +forward 2 +down 3 +forward 9 +down 3 +down 9 +up 3 +forward 7 +up 2 +up 5 +forward 3 +down 9 +up 1 +down 2 +down 4 +down 6 +forward 5 +forward 5 +up 7 +up 3 +down 1 +down 1 +up 8 +down 4 +forward 1 +down 4 +down 5 +down 9 +forward 7 +up 2 +up 1 +down 7 +forward 9 +forward 9 +forward 8 +forward 9 +down 5 +forward 9 +forward 9 +up 9 +down 7 +down 8 +forward 2 +forward 9 +down 1 +forward 3 +forward 8 +up 4 +down 4 +forward 4 +forward 3 +down 7 +down 3 +forward 6 +forward 9 +forward 1 +down 2 +up 3 +down 9 +forward 5 +forward 6 +forward 8 +up 2 +up 1 +down 3 +up 4 +forward 1 +up 9 +forward 4 +down 1 +up 2 +down 8 +down 9 +forward 3 +down 2 +up 5 +forward 2 +down 6 +down 5 +down 8 +down 3 +down 7 +down 2 +forward 8 +down 9 +up 7 +down 7 +down 7 +down 7 +forward 4 +forward 1 +forward 9 +up 9 +forward 5 +forward 8 +forward 7 +forward 7 +down 1 +forward 3 +down 7 +forward 2 +forward 4 +up 7 +forward 1 +down 5 +forward 5 +forward 1 +down 8 +forward 7 +forward 2 +up 3 +down 1 +up 7 +down 1 +down 2 +forward 9 +forward 6 +forward 3 +forward 2 +down 4 +forward 7 +forward 7 +forward 5 +forward 7 +forward 2 +down 9 +down 8 +forward 8 +forward 9 +down 3 +up 7 +up 1 +down 4 +forward 2 +forward 7 +forward 3 +forward 9 +up 2 +down 3 +forward 4 +down 8 +down 6 +down 4 +down 6 +down 7 +forward 9 +down 9 +forward 8 +down 1 +down 1 +forward 1 +forward 1 +down 7 +down 3 +down 3 +forward 2 +down 7 +forward 8 +up 7 +down 5 +forward 7 +forward 9 +down 2 +forward 9 +forward 3 +forward 9 +forward 9 +down 3 +forward 1 +forward 7 +up 8 +forward 7 +forward 4 +forward 5 +forward 6 +down 4 +up 3 +down 5 +up 8 +up 5 +up 6 +forward 1 +down 1 +up 8 +down 8 +down 5 +forward 8 +up 9 +down 8 +forward 2 +up 6 +forward 3 +down 3 +down 8 +down 4 +forward 6 +forward 2 +down 9 +up 9 +down 2 +down 9 +up 1 +down 6 +up 2 +down 9 +forward 8 +forward 3 +forward 6 +down 6 +up 9 +up 8 +forward 4 +down 2 +forward 5 +up 4 +up 4 +down 5 +down 9 +forward 3 +down 1 +forward 1 +forward 6 +forward 2 +down 7 +forward 7 +up 5 +forward 2 +down 8 +forward 5 +down 1 +down 7 +forward 7 +down 4 +forward 7 +forward 2 +down 6 +forward 9 +forward 4 +up 3 +forward 8 +forward 2 +up 6 +up 3 +forward 9 +forward 4 +down 2 +forward 6 +down 1 +forward 5 +down 2 +up 1 +down 1 +forward 2 +forward 4 +down 7 +up 6 +forward 4 +forward 7 +up 8 +forward 3 +down 8 +forward 7 +down 2 +down 5 +forward 3 +forward 7 +down 5 +forward 2 +forward 8 +up 6 +forward 8 +down 7 +up 3 +down 2 +forward 2 +down 8 +down 2 +up 5 +up 1 +forward 6 +down 1 +forward 2 +down 1 +forward 6 +forward 9 +down 9 +down 8 +down 3 +forward 5 +forward 3 +down 3 +down 1 +forward 4 +forward 8 +forward 2 +down 7 +forward 9 +forward 4 +down 4 +forward 6 +down 4 +forward 8 +down 8 +down 2 +up 7 +down 9 +down 5 +up 4 +down 3 +up 5 +forward 8 +down 4 +down 6 +forward 1 +up 2 +down 6 +forward 4 +down 8 +forward 1 +up 7 +forward 6 +up 2 +forward 1 +down 8 +down 2 +forward 3 +down 3 +down 2 +up 9 +down 3 +down 4 +down 3 +forward 9 +down 6 +forward 8 +forward 8 +down 1 +forward 8 +down 5 +up 9 +up 5 +up 5 +forward 5 +forward 4 +down 7 +down 6 +forward 9 +up 4 +forward 7 +up 5 +forward 7 +down 5 +down 3 +forward 5 +down 8 +up 3 +forward 4 +up 2 +down 1 +down 6 +down 6 +up 3 +forward 5 +forward 8 +down 2 +forward 6 +down 5 +down 4 +forward 9 +down 6 +forward 6 +up 5 +forward 4 +forward 5 +forward 1 +up 6 +up 2 +down 8 +up 4 +up 2 +down 3 +forward 4 +down 5 +forward 8 +up 5 +forward 6 +forward 9 +down 6 +down 3 +up 3 +down 2 +up 9 +forward 5 +up 5 +forward 3 +forward 2 +down 5 +up 2 +down 5 +forward 8 +forward 2 +down 1 +up 2 +down 6 +up 8 +down 3 +down 2 +forward 2 +down 1 +forward 8 +forward 2 +up 6 +forward 6 +up 3 +up 8 +up 2 +up 4 +down 7 +forward 6 +down 3 +down 2 +forward 5 +down 7 +down 6 +forward 1 +down 4 +forward 4 +up 1 +down 3 +up 3 +down 4 +forward 1 +down 2 +forward 6 +down 7 +forward 3 +forward 1 +forward 5 +down 7 +down 9 +forward 7 +forward 2 +forward 7 +forward 8 +down 1 +down 1 +up 6 +forward 2 +up 7 +down 9 +up 4 +up 9 +forward 9 +forward 6 +down 3 +down 9 +forward 1 +forward 1 +up 8 +forward 6 +forward 1 +forward 9 +down 2 +down 1 +forward 2 +forward 9 +down 9 +down 6 +forward 5 +down 6 +forward 4 +down 3 +forward 1 +down 4 +up 5 +forward 6 +forward 3 +down 2 +up 3 +down 9 +down 2 +forward 1 +down 4 +up 2 +down 6 +forward 6 +forward 7 +forward 3 +forward 9 +up 7 +up 2 +forward 2 +up 2 +forward 1 +up 2 +forward 8 +forward 5 +down 6 +up 7 +down 4 +down 1 +up 8 +forward 1 +down 3 +up 8 +forward 8 +down 6 +down 1 +down 6 +forward 1 +forward 7 +up 3 +forward 6 +forward 1 +up 3 +down 5 +down 1 +forward 5 +down 5 +up 7 +up 3 +down 6 +forward 6 +up 7 +forward 5 +forward 2 +forward 1 +down 8 +forward 3 +down 3 +forward 5 +down 4 +up 4 +down 8 +down 7 +down 7 +up 9 +up 2 +down 4 +down 1 +down 4 +forward 9 +up 8 +up 4 +down 2 +forward 8 +forward 1 +down 2 +up 5 +down 3 +down 8 +down 8 +down 6 +down 5 +forward 7 +down 3 +forward 5 +down 6 +down 9 +down 2 +forward 8 +down 4 +up 2 +forward 4 +down 8 +down 5 +down 4 +forward 2 +up 3 +forward 4 +up 3 +down 8 +down 2 +up 8 +forward 4 +forward 6 +down 3 +forward 9 +forward 6 +forward 8 +forward 5 +forward 1 +forward 5 +down 3 +up 2 +forward 4 +down 4 +down 3 +forward 1 +forward 3 +forward 7 +forward 9 +down 2 +up 4 +down 3 +up 8 +forward 9 +down 5 +up 9 +down 1 +up 4 +forward 7 +forward 2 +forward 4 +up 8 +down 4 +down 1 +forward 8 +down 4 +down 7 +up 1 +down 3 +down 2 +forward 5 +up 6 +down 7 +forward 2 \ No newline at end of file