commit cebb80763a1611ff685326983d1e8936cf952de5 Author: Johannes Date: Sat Dec 1 10:03:12 2018 +0100 day01 both diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..53eaa21 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +**/*.rs.bk diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..660d509 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,4 @@ +[[package]] +name = "aoc_2018" +version = "0.1.0" + diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..dd9277a --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "aoc_2018" +version = "0.1.0" +authors = ["Johannes "] + +[dependencies] diff --git a/input/day01.txt b/input/day01.txt new file mode 100644 index 0000000..c5257c4 --- /dev/null +++ b/input/day01.txt @@ -0,0 +1,957 @@ +-5 +-2 ++1 ++14 ++7 ++5 +-14 +-4 +-5 +-12 ++7 +-5 ++17 ++5 +-13 +-12 ++15 ++22 +-5 +-6 +-12 ++20 ++4 ++2 ++17 +-1 ++18 +-7 +-1 +-17 ++11 +-12 +-5 +-2 ++9 ++2 +-6 +-17 +-1 ++2 +-3 ++15 ++19 ++9 +-8 ++13 ++1 ++11 ++16 ++3 +-16 +-7 +-15 +-15 ++12 ++16 ++18 ++1 +-9 ++16 +-9 +-19 ++17 ++1 +-15 ++13 +-9 +-8 +-1 ++7 ++17 ++13 ++15 +-17 +-3 ++12 +-10 ++5 ++4 +-16 ++15 ++3 ++19 ++1 +-2 ++19 +-16 +-11 ++4 +-10 +-8 ++13 ++13 ++19 +-6 +-19 ++1 +-4 ++18 ++15 ++16 +-18 ++12 ++3 +-9 ++8 ++3 +-9 ++11 ++4 ++8 ++1 ++6 +-10 +-3 ++15 ++16 ++15 ++12 +-14 ++4 +-14 +-7 +-3 ++14 ++4 ++3 +-6 +-7 ++11 +-2 +-18 ++17 +-3 ++14 ++18 ++6 ++8 ++18 +-13 +-7 ++17 +-18 +-10 +-15 ++13 +-16 ++5 +-10 ++15 +-8 +-4 ++14 ++13 +-10 +-14 ++7 ++5 ++13 +-4 ++12 ++3 ++14 +-7 ++6 ++12 ++17 +-18 ++3 +-6 +-3 +-14 +-1 ++13 ++19 ++3 ++9 ++4 ++11 ++12 ++3 ++1 ++14 ++7 +-17 ++12 ++11 ++6 +-7 ++4 +-11 +-1 ++6 +-19 +-10 +-16 +-2 +-19 ++7 ++9 +-3 ++5 ++12 ++15 ++8 ++11 ++1 ++8 ++15 +-9 +-9 +-8 +-10 +-3 +-16 ++7 +-17 ++9 +-5 ++16 +-15 +-4 ++15 +-5 +-25 +-6 ++1 ++4 ++17 ++19 +-13 ++17 ++7 ++19 ++2 ++4 ++10 ++16 +-9 ++19 ++13 ++3 +-10 ++9 ++5 ++1 ++18 +-11 +-14 +-4 +-5 +-13 +-7 +-12 ++2 ++3 ++6 +-16 +-1 ++13 +-10 +-4 +-1 +-3 ++9 ++22 ++4 +-18 ++17 ++11 +-21 +-17 +-18 +-8 ++12 ++6 ++15 ++12 ++10 +-7 ++18 ++10 +-8 +-10 +-18 ++11 +-17 ++25 ++15 +-9 +-19 ++38 +-3 +-6 +-23 ++34 +-25 +-5 +-12 ++25 ++14 ++17 ++30 ++3 ++9 +-8 ++16 ++21 ++21 ++4 +-12 ++23 +-13 ++9 ++3 ++6 ++13 ++15 ++6 +-7 ++15 ++12 +-10 ++13 ++12 +-7 ++13 ++4 +-9 ++18 +-10 ++5 ++8 +-7 ++2 +-14 +-12 +-1 +-6 +-16 +-18 +-3 ++1 ++12 +-6 ++15 +-17 ++15 ++13 ++6 +-15 ++26 ++1 +-21 +-3 +-21 +-4 ++14 +-1 +-19 +-11 ++13 +-10 +-14 ++2 +-17 +-23 ++25 +-16 ++8 +-30 ++17 +-44 ++13 +-19 ++5 +-9 +-12 ++10 ++14 ++17 ++24 +-15 ++7 +-61 +-103 +-18 ++21 +-22 +-6 +-9 +-6 +-9 +-7 +-15 +-17 ++4 +-1 ++10 ++8 ++14 +-4 ++15 +-16 +-6 +-16 +-15 +-12 ++15 ++10 +-15 ++3 ++15 +-10 +-17 ++3 +-5 +-12 ++4 ++3 +-37 +-7 ++14 +-18 +-8 ++6 +-11 ++14 ++30 ++7 ++23 ++39 +-12 ++11 +-8 ++11 +-1 ++56 +-28 +-12 ++7 ++34 ++47 ++21 ++88 ++61 ++18 ++10 +-99 +-287 ++26 +-858 +-209 +-61255 ++2 +-7 +-8 ++12 ++18 ++17 +-14 +-2 ++14 ++4 ++3 ++3 +-15 ++21 ++3 ++20 ++1 ++3 +-1 +-25 +-2 ++7 +-9 ++17 +-19 +-6 +-13 ++2 +-4 +-3 +-14 +-8 ++12 +-20 ++17 +-40 ++11 ++3 +-20 +-16 +-18 +-3 +-6 +-10 ++4 ++20 +-12 +-3 ++11 ++16 +-2 ++4 +-9 ++28 +-12 ++5 ++17 +-13 ++35 ++25 ++2 ++35 +-17 +-8 ++31 ++3 +-39 +-46 ++3 +-96 +-18 +-14 +-14 +-12 ++9 ++15 ++3 ++18 +-8 ++1 +-2 +-15 ++13 ++14 +-13 +-3 ++7 +-11 +-15 +-17 +-12 +-15 +-17 ++9 ++7 +-10 +-8 +-3 ++9 ++16 ++3 ++15 +-14 +-5 +-9 ++1 +-3 ++10 ++3 +-18 +-21 +-11 ++2 +-17 +-17 +-7 +-11 ++8 ++11 +-2 +-7 +-1 +-19 +-2 +-16 ++1 ++5 ++11 ++18 ++5 ++17 ++2 +-5 +-2 ++19 +-4 ++12 ++2 ++20 +-13 +-20 +-12 ++10 ++4 ++14 +-1 ++12 ++13 +-10 +-13 +-8 +-1 ++14 ++16 ++6 ++10 ++18 ++19 ++14 +-1 ++6 +-13 +-9 ++10 +-20 ++1 ++1 +-12 ++6 ++7 +-15 +-13 +-2 ++14 +-19 +-5 +-10 +-17 ++15 +-5 ++8 ++20 ++9 ++14 +-6 ++4 +-3 ++19 ++18 +-14 +-3 +-8 ++4 ++16 ++7 +-3 +-5 ++19 +-2 ++12 ++19 ++12 +-10 +-17 +-40 ++1 +-11 ++19 +-27 +-9 ++45 +-27 ++31 ++1 +-25 ++41 ++58 +-5 +-39 +-112 ++1 +-8 +-3 +-6 +-15 +-3 +-9 ++13 ++13 +-24 ++3 +-4 ++13 +-19 +-21 ++16 +-20 +-10 +-15 +-16 +-1 +-13 +-12 +-17 ++16 ++17 ++16 +-2 +-9 +-1 +-19 ++8 ++5 +-18 ++17 +-19 +-19 +-12 ++14 +-18 +-12 ++10 ++9 +-13 +-8 ++19 ++16 ++13 +-5 ++2 ++16 +-15 ++17 ++9 ++10 ++2 +-5 ++20 ++16 +-8 +-4 ++16 ++6 +-7 +-2 +-11 ++18 ++11 +-1 ++2 ++5 ++3 ++40 +-38 ++22 +-11 +-15 +-27 ++7 +-25 ++4 +-11 +-15 +-12 ++15 +-20 +-13 ++9 +-13 ++7 +-5 ++10 ++18 ++24 ++8 ++15 +-6 +-10 +-10 +-1 +-4 +-3 +-17 ++7 +-15 ++20 +-19 +-18 +-14 +-4 +-26 +-22 +-5 ++17 ++6 ++13 ++9 ++7 ++28 +-11 +-8 ++57 +-23 +-37 +-11 +-43 ++3 +-14 ++3 +-14 ++13 +-15 ++6 +-23 ++8 ++12 +-8 ++15 ++16 ++2 +-9 +-14 ++18 ++19 +-1 +-43 +-2 +-3 +-13 ++5 +-6 +-13 +-20 ++15 ++13 +-12 ++3 ++2 ++3 ++11 ++7 +-17 +-8 +-13 ++18 +-17 +-2 +-13 ++5 ++3 ++1 +-11 ++20 ++4 ++2 +-1 +-19 +-8 +-19 ++1 +-6 +-12 ++8 +-6 +-5 ++1 ++6 ++9 +-12 ++13 ++10 +-14 ++20 +-11 ++9 ++9 +-3 +-18 ++9 +-5 ++9 ++2 +-9 +-19 +-4 +-10 ++7 +-8 ++68 ++30 ++2 +-9 ++12 +-65 ++15 +-26 +-9 +-15 +-67 +-38 +-36 +-37 +-7 ++18 +-20 +-44 ++35 +-70 +-85 ++14 ++18 +-499 ++209 +-61690 +-5 ++15 +-4 ++3 ++5 ++6 ++15 ++16 ++3 +-4 ++12 +-14 +-7 +-9 +-15 ++2 +-1 +-11 +-21 +-8 +-2 +-15 ++19 ++7 +-10 +-19 +-3 +-14 ++4 ++9 ++13 +-16 +-14 ++2 ++10 +-19 ++6 ++16 ++11 ++7 +-14 +-9 +-21 +-7 +-12 ++2 ++12 +-6 ++125503 diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..77cc209 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,2 @@ +pub mod tasks; +pub mod utils; diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..273a1db --- /dev/null +++ b/src/main.rs @@ -0,0 +1,4 @@ +fn main() { + aoc_2018::tasks::day01::task1(); + aoc_2018::tasks::day01::task2(); +} diff --git a/src/tasks/day01.rs b/src/tasks/day01.rs new file mode 100644 index 0000000..1662125 --- /dev/null +++ b/src/tasks/day01.rs @@ -0,0 +1,36 @@ +use std::collections::HashSet; +use utils; + +pub fn task1() { + let contents = utils::read_file("input/day01.txt"); + + let mut frequency = 0; + for line in contents.split_whitespace() { + let number: i32 = line.parse().unwrap(); + frequency += number; + } + + println!("Result: {}", frequency); +} + +pub fn task2() { + let contents = utils::read_file("input/day01.txt"); + + let mut seen = HashSet::new(); + + let mut frequency = 0; + seen.insert(frequency); + let changes: Vec = contents.lines().map(|line| line.parse().unwrap()).collect(); + + loop { + for number in changes.iter() { + frequency += number; + if seen.contains(&frequency) { + println!("{} was there already!", frequency); + return; + } + + seen.insert(frequency); + } + } +} diff --git a/src/tasks/mod.rs b/src/tasks/mod.rs new file mode 100644 index 0000000..12b8f18 --- /dev/null +++ b/src/tasks/mod.rs @@ -0,0 +1 @@ +pub mod day01; diff --git a/src/utils.rs b/src/utils.rs new file mode 100644 index 0000000..66a5713 --- /dev/null +++ b/src/utils.rs @@ -0,0 +1,11 @@ +use std::fs::File; +use std::io::prelude::*; + +pub fn read_file(path: &str) -> String { + let mut f = File::open(path).expect(&format!("file '{}' not found", path)); + + let mut contents = String::new(); + f.read_to_string(&mut contents) + .expect("something went wrong reading the file"); + contents +}