From 47fb1fcdd89e39803e44312e7a542a93b5e43b30 Mon Sep 17 00:00:00 2001 From: inga-lovinde <52715130+inga-lovinde@users.noreply.github.com> Date: Wed, 9 Dec 2020 01:20:47 +0100 Subject: [PATCH] solution for day 3 --- day03/Cargo.toml | 9 ++++++++ day03/src/main.rs | 59 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 day03/Cargo.toml create mode 100644 day03/src/main.rs diff --git a/day03/Cargo.toml b/day03/Cargo.toml new file mode 100644 index 0000000..9d75ae4 --- /dev/null +++ b/day03/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "day03" +version = "0.1.0" +authors = ["inga-lovinde <52715130+inga-lovinde@users.noreply.github.com>"] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/day03/src/main.rs b/day03/src/main.rs new file mode 100644 index 0000000..6f809bb --- /dev/null +++ b/day03/src/main.rs @@ -0,0 +1,59 @@ +use std::io::{self, BufRead}; + +fn get_number_of_trees(right: usize, down: usize, board: &[Vec]) -> usize { + let mut x = 0; + let mut y = 0; + let mut trees = 0; + while x < board.len() { + let line = &board[x]; + if (line[y] == '#') { + trees = trees + 1; + } + + x += down; + y = (y + right) % line.len(); + } + + trees +} + +fn main() { + let stdin = io::stdin(); + let board: Vec> = stdin.lock().lines() + .map(|line| line.unwrap().chars().collect()) + .collect(); + + let mut product = 1u64; + + { + let result = get_number_of_trees(1, 1, &board); + println!("{}", result); + product = product * (result as u64); + } + + { + let result = get_number_of_trees(3, 1, &board); + println!("{}", result); + product = product * (result as u64); + } + + { + let result = get_number_of_trees(5, 1, &board); + println!("{}", result); + product = product * (result as u64); + } + + { + let result = get_number_of_trees(7, 1, &board); + println!("{}", result); + product = product * (result as u64); + } + + { + let result = get_number_of_trees(1, 2, &board); + println!("{}", result); + product = product * (result as u64); + } + + println!("{}", product); +}