From 3b7d3c5462f125854bf096bc968f15e8d89f30ed Mon Sep 17 00:00:00 2001 From: LongHairedHacker Date: Thu, 2 Dec 2021 20:14:30 +0100 Subject: [PATCH] Day 2 working --- inputs/day2.txt | 1000 +++++++++++++++++++++++++++++++++++++++++++++++ src/bin/day2.rs | 44 +++ 2 files changed, 1044 insertions(+) create mode 100644 inputs/day2.txt create mode 100644 src/bin/day2.rs diff --git a/inputs/day2.txt b/inputs/day2.txt new file mode 100644 index 0000000..3feb052 --- /dev/null +++ b/inputs/day2.txt @@ -0,0 +1,1000 @@ +forward 2 +forward 3 +forward 5 +forward 6 +down 7 +forward 8 +forward 4 +forward 7 +forward 5 +forward 5 +down 4 +down 9 +forward 8 +forward 5 +up 5 +down 5 +forward 3 +down 4 +down 8 +forward 9 +down 1 +up 9 +down 7 +up 7 +up 1 +forward 1 +down 1 +down 4 +down 4 +down 8 +down 4 +up 3 +down 1 +down 3 +forward 7 +down 6 +forward 3 +forward 5 +forward 2 +up 9 +forward 7 +up 5 +down 3 +forward 1 +forward 2 +down 3 +down 8 +down 3 +forward 8 +up 5 +down 5 +forward 3 +down 5 +forward 9 +down 3 +down 4 +down 9 +down 7 +up 3 +down 9 +up 9 +up 1 +forward 3 +up 4 +down 3 +forward 7 +forward 7 +up 7 +forward 6 +down 7 +down 6 +forward 2 +forward 9 +down 5 +forward 4 +up 6 +down 1 +down 9 +down 9 +forward 4 +down 1 +forward 6 +down 1 +down 5 +down 4 +down 4 +forward 4 +forward 9 +up 1 +down 2 +down 8 +down 5 +down 8 +down 8 +up 2 +forward 8 +up 1 +forward 4 +down 5 +down 1 +up 2 +forward 6 +forward 9 +forward 2 +forward 6 +forward 9 +up 6 +forward 9 +up 4 +down 7 +up 6 +forward 2 +down 1 +up 3 +forward 1 +forward 8 +down 6 +down 8 +down 8 +forward 8 +forward 2 +forward 2 +down 2 +up 1 +down 9 +up 9 +down 9 +up 3 +forward 9 +up 4 +up 7 +up 6 +down 9 +forward 1 +down 3 +down 4 +forward 8 +down 3 +down 9 +up 3 +forward 2 +up 5 +down 3 +forward 8 +up 3 +down 3 +forward 2 +forward 9 +down 1 +down 9 +down 4 +up 7 +down 4 +up 6 +forward 5 +down 6 +forward 3 +down 2 +forward 1 +forward 8 +down 4 +forward 1 +up 7 +forward 6 +up 9 +forward 6 +down 3 +forward 2 +down 4 +forward 6 +down 3 +down 6 +down 1 +down 1 +down 5 +forward 3 +forward 9 +forward 8 +down 3 +forward 7 +up 9 +forward 9 +up 2 +forward 4 +up 3 +forward 1 +up 6 +up 8 +down 5 +down 6 +up 9 +down 6 +down 9 +up 9 +down 4 +forward 5 +up 2 +down 3 +up 3 +down 1 +forward 3 +down 5 +forward 7 +down 6 +down 7 +down 5 +forward 2 +up 6 +down 9 +down 4 +down 3 +forward 9 +up 8 +forward 2 +down 2 +forward 4 +up 6 +down 4 +up 8 +down 7 +down 2 +up 6 +up 4 +down 2 +forward 5 +up 4 +down 8 +forward 3 +forward 1 +down 7 +forward 8 +forward 7 +down 7 +up 4 +forward 8 +down 5 +up 9 +forward 1 +forward 4 +forward 9 +forward 7 +down 9 +up 9 +down 1 +down 7 +forward 7 +down 7 +down 7 +down 3 +down 5 +forward 3 +down 2 +forward 6 +down 9 +up 5 +up 3 +forward 5 +down 6 +down 1 +forward 4 +down 3 +forward 8 +down 7 +forward 7 +forward 7 +up 7 +up 2 +up 3 +forward 9 +down 5 +up 2 +forward 5 +up 5 +forward 2 +forward 2 +down 8 +forward 2 +up 4 +forward 1 +forward 3 +up 8 +up 9 +forward 5 +down 1 +up 8 +down 4 +down 8 +up 4 +forward 9 +down 6 +down 8 +up 2 +up 3 +down 7 +down 4 +forward 5 +down 6 +forward 3 +forward 3 +forward 8 +down 1 +down 7 +down 9 +down 2 +down 7 +forward 7 +down 7 +down 6 +up 6 +forward 8 +forward 5 +up 5 +down 2 +up 8 +up 4 +down 9 +up 2 +forward 5 +up 2 +down 4 +up 4 +forward 2 +forward 4 +forward 9 +forward 9 +up 4 +up 5 +down 1 +down 6 +down 1 +down 4 +down 5 +down 3 +forward 3 +down 9 +forward 6 +down 3 +down 9 +down 2 +up 2 +down 2 +down 7 +forward 9 +down 3 +down 3 +down 2 +down 3 +forward 2 +down 9 +down 9 +up 5 +up 3 +forward 4 +up 7 +forward 8 +up 6 +forward 7 +down 7 +down 1 +forward 5 +down 2 +up 1 +down 8 +up 3 +forward 2 +up 9 +down 1 +down 3 +down 6 +down 2 +down 7 +up 2 +forward 5 +forward 7 +down 2 +forward 5 +forward 4 +forward 5 +down 3 +forward 7 +down 7 +forward 8 +down 3 +down 2 +up 1 +forward 6 +down 4 +down 2 +forward 7 +up 3 +down 4 +forward 2 +up 6 +down 3 +up 6 +up 8 +down 9 +up 6 +forward 8 +forward 9 +forward 4 +forward 7 +down 2 +forward 9 +down 7 +up 9 +down 5 +down 6 +up 5 +down 4 +forward 8 +forward 4 +forward 4 +down 6 +forward 3 +forward 6 +down 9 +down 9 +up 2 +forward 7 +down 8 +down 9 +down 9 +forward 7 +forward 3 +down 7 +down 8 +forward 8 +down 6 +down 5 +down 9 +down 3 +forward 1 +down 5 +forward 2 +forward 8 +down 2 +forward 6 +forward 3 +down 7 +down 4 +forward 8 +forward 1 +down 6 +forward 9 +forward 6 +up 1 +up 3 +down 8 +forward 1 +up 5 +down 4 +forward 7 +up 3 +down 2 +forward 1 +forward 9 +down 9 +down 7 +forward 8 +down 4 +up 3 +down 4 +forward 2 +forward 6 +down 7 +forward 6 +down 6 +down 4 +down 1 +up 9 +down 4 +down 7 +up 4 +down 9 +forward 6 +down 3 +forward 2 +down 4 +forward 3 +down 5 +up 9 +forward 8 +up 7 +up 6 +up 4 +forward 1 +down 1 +forward 4 +up 6 +forward 5 +forward 4 +forward 5 +up 6 +down 1 +forward 3 +up 7 +down 9 +up 9 +down 5 +forward 6 +forward 4 +up 1 +down 4 +up 1 +forward 3 +forward 1 +down 3 +forward 7 +down 2 +forward 3 +up 2 +forward 8 +down 3 +up 9 +down 5 +forward 6 +down 1 +down 8 +down 5 +forward 1 +down 6 +up 2 +forward 6 +down 2 +down 1 +up 6 +up 7 +down 5 +forward 7 +forward 6 +forward 6 +down 7 +forward 4 +down 5 +up 5 +down 1 +up 8 +down 8 +down 2 +down 2 +down 9 +up 9 +forward 2 +forward 7 +down 7 +down 4 +down 4 +down 8 +forward 5 +forward 2 +up 9 +down 9 +forward 7 +up 9 +down 2 +down 7 +up 2 +up 8 +forward 8 +down 4 +forward 3 +forward 4 +forward 6 +forward 2 +down 1 +down 2 +forward 2 +up 1 +down 1 +forward 5 +up 3 +up 3 +down 3 +down 1 +down 4 +up 5 +up 6 +forward 5 +up 7 +forward 6 +down 4 +down 7 +up 8 +forward 1 +down 5 +up 4 +up 3 +up 5 +down 1 +up 5 +forward 3 +up 5 +forward 2 +forward 2 +forward 5 +forward 2 +up 9 +forward 4 +down 1 +down 3 +down 5 +up 2 +down 8 +forward 8 +forward 9 +down 1 +down 3 +forward 8 +forward 2 +down 2 +down 1 +up 7 +forward 2 +forward 8 +down 9 +forward 1 +forward 4 +down 7 +down 4 +up 7 +down 3 +down 1 +down 4 +up 7 +down 6 +forward 7 +down 8 +up 2 +up 4 +up 6 +down 9 +down 9 +down 8 +forward 6 +up 3 +up 1 +forward 9 +forward 6 +up 4 +up 2 +up 7 +forward 5 +up 9 +up 9 +forward 9 +up 6 +down 1 +down 3 +forward 3 +down 2 +down 2 +down 6 +down 9 +forward 3 +forward 7 +up 3 +forward 3 +down 5 +forward 9 +up 6 +down 2 +forward 8 +down 3 +up 5 +down 6 +forward 9 +down 5 +down 2 +down 6 +forward 8 +forward 6 +down 1 +forward 6 +up 1 +up 7 +down 4 +down 7 +forward 4 +forward 7 +down 4 +forward 8 +down 8 +down 7 +forward 9 +down 1 +down 3 +down 6 +forward 7 +forward 6 +forward 3 +forward 8 +down 5 +down 3 +up 1 +down 9 +down 8 +forward 3 +down 6 +down 1 +forward 5 +forward 5 +forward 9 +up 5 +down 6 +up 9 +down 7 +down 6 +up 1 +forward 5 +forward 7 +forward 8 +forward 7 +forward 6 +forward 3 +forward 1 +forward 2 +up 4 +forward 3 +forward 4 +forward 5 +up 2 +up 3 +forward 4 +down 9 +up 4 +forward 7 +down 6 +down 6 +down 1 +forward 2 +down 2 +forward 2 +down 3 +forward 7 +forward 8 +down 4 +up 7 +forward 7 +down 7 +forward 7 +forward 9 +down 7 +up 2 +down 3 +forward 7 +down 1 +forward 8 +forward 2 +up 9 +down 3 +forward 2 +up 4 +forward 9 +down 4 +down 4 +forward 4 +down 2 +down 9 +forward 4 +down 2 +down 6 +forward 9 +forward 2 +up 1 +forward 2 +forward 3 +down 5 +up 8 +down 4 +down 4 +forward 7 +down 2 +up 6 +down 9 +forward 9 +up 1 +forward 3 +down 5 +forward 3 +down 3 +forward 4 +up 3 +down 6 +down 7 +down 4 +down 8 +down 4 +down 5 +up 9 +up 1 +down 7 +up 3 +up 3 +down 3 +up 4 +up 6 +forward 8 +down 1 +forward 7 +forward 4 +down 9 +down 1 +forward 7 +forward 9 +forward 1 +down 3 +down 2 +forward 3 +forward 2 +down 7 +forward 9 +forward 6 +up 9 +down 2 +forward 9 +up 6 +forward 8 +up 1 +down 5 +down 8 +forward 1 +down 1 +forward 9 +up 1 +forward 9 +forward 1 +forward 1 +down 7 +forward 3 +forward 6 +down 5 +forward 7 +forward 1 +down 7 +down 6 +down 6 +forward 5 +up 6 +down 6 +forward 8 +up 2 +down 8 +down 3 +up 5 +up 8 +down 6 +forward 4 +forward 2 +up 3 +forward 5 +forward 3 +up 8 +forward 6 +up 8 +forward 1 +up 8 +up 7 +up 6 +forward 2 +down 9 +down 9 +forward 3 +down 7 +forward 3 +down 6 +forward 9 +up 5 +down 1 +forward 7 +down 1 +down 5 +down 9 +forward 8 +forward 9 +forward 7 +down 9 +up 4 +forward 5 +down 5 +forward 5 +down 9 +forward 9 +forward 3 +up 5 +forward 8 +up 5 +down 1 +forward 8 +down 3 +forward 6 +up 9 +forward 8 +down 4 +forward 3 +down 5 +forward 8 +forward 9 +forward 2 +down 1 +down 6 +down 4 +forward 9 +up 2 +down 3 +down 6 +down 3 +down 9 +down 1 +up 6 +down 2 +down 7 +up 5 +forward 5 +up 1 +down 7 +forward 6 +up 6 +down 2 +down 3 +forward 3 +down 5 +forward 8 +down 9 +down 7 +down 8 +up 7 +down 1 +forward 1 +forward 1 +down 2 +up 4 +forward 2 +down 3 +up 2 +down 3 +down 2 +forward 7 +down 1 +up 7 +down 2 +down 1 +forward 6 +down 9 +up 9 +down 4 +down 6 +up 9 +forward 7 +forward 9 +forward 7 +down 4 +down 1 +forward 7 +down 4 +down 7 +down 3 +down 5 +forward 3 +down 8 +forward 8 +forward 7 +forward 8 +down 4 +down 9 +forward 2 +forward 7 +up 8 +forward 4 +down 6 +up 8 +down 2 +forward 3 +down 6 +down 8 +forward 8 +forward 2 +forward 9 +up 6 +forward 7 +down 3 +down 5 +forward 8 +forward 9 +down 3 +forward 3 +forward 2 +forward 3 +down 8 +up 9 +up 5 +up 2 +up 6 +up 1 +up 1 +up 5 +forward 3 +forward 2 +down 3 +forward 4 diff --git a/src/bin/day2.rs b/src/bin/day2.rs new file mode 100644 index 0000000..82d1af7 --- /dev/null +++ b/src/bin/day2.rs @@ -0,0 +1,44 @@ +use std::error::Error; +use std::fs::File; +use std::io::{self, BufRead}; +use std::vec::Vec; + +fn to_moves(line: String) -> (i32, i32) { + let mut parts = line.split(" "); + let dir = parts.nth(0).unwrap(); + let arg: i32 = parts.nth(0).unwrap().parse().unwrap(); + + match dir { + "up" => (0, -arg), + "down" => (0, arg), + "forward" => (arg, 0), + _ => panic!("Unsupported Direction: {}", dir), + } +} + +fn main() -> Result<(), Box> { + let file = File::open("inputs/day2.txt")?; + let lines = io::BufReader::new(file).lines().map(|l| l.unwrap()); + + let moves: Vec<(i32, i32)> = lines.map(|l| to_moves(l)).collect(); + let pos = moves + .iter() + .fold((0, 0), |(ax, ay), (bx, by)| (ax + bx, ay + by)); + + println!("Answer1: {}", pos.0 * pos.1); + + let mut aim = 0; + let mut pos = (0, 0); + for m in moves.iter() { + aim = aim + m.1; + println!("{} {}", m.0, m.1); + + pos = (pos.0 + m.0, pos.1 + m.0 * aim); + println!("{} {}", pos.0, pos.1); + + } + + println!("Answer2: {}", pos.0 * pos.1); + + Ok(()) +}