From c507a894e06396fe93757bd84c8b050aa62ffea2 Mon Sep 17 00:00:00 2001 From: Tobias Eidelpes Date: Sun, 1 Dec 2019 18:45:08 +0100 Subject: [PATCH] Remove cargo stuff for rust and add python implementation --- day1/haskell/day1.hs | 11 ----------- day1/python/day1.py | 21 +++++++++++++++++++++ day1/rust/Cargo.toml | 9 --------- day1/rust/main.rs | 31 +++++++++++++++++++++++++++++++ day1/rust/src/main.rs | 30 ------------------------------ 5 files changed, 52 insertions(+), 50 deletions(-) delete mode 100644 day1/haskell/day1.hs create mode 100644 day1/python/day1.py delete mode 100644 day1/rust/Cargo.toml create mode 100644 day1/rust/main.rs delete mode 100644 day1/rust/src/main.rs diff --git a/day1/haskell/day1.hs b/day1/haskell/day1.hs deleted file mode 100644 index ad11338..0000000 --- a/day1/haskell/day1.hs +++ /dev/null @@ -1,11 +0,0 @@ -import System.IO -import Control.Monad - -getInts :: FilePath -> IO [Integer] -getInts path = do - contents <- readFile path - let ints = (map read . lines $ contents) :: [Integer] - return ints - -main = do - putStrLn "The solution is: " diff --git a/day1/python/day1.py b/day1/python/day1.py new file mode 100644 index 0000000..ddeac2e --- /dev/null +++ b/day1/python/day1.py @@ -0,0 +1,21 @@ +def calculate_fuel(mass): + return mass // 3 - 2 + +def calculate_fuel2(mass): + fuel = mass // 3 - 2 + if fuel < 0: + return 0 + else: + return fuel + calculate_fuel2(fuel) + +if __name__ == '__main__': + with open('../input') as f: + content = f.readlines() + + modules = [int(x.strip()) for x in content] + + fuel1 = [calculate_fuel(x) for x in modules] + fuel2 = [calculate_fuel2(x) for x in modules] + + print("Solution for Part One: ", sum(fuel1)) + print("Solution for Part Two: ", sum(fuel2)) diff --git a/day1/rust/Cargo.toml b/day1/rust/Cargo.toml deleted file mode 100644 index a147ffa..0000000 --- a/day1/rust/Cargo.toml +++ /dev/null @@ -1,9 +0,0 @@ -[package] -name = "day1" -version = "0.1.0" -authors = ["Tobias Eidelpes "] -edition = "2018" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] diff --git a/day1/rust/main.rs b/day1/rust/main.rs new file mode 100644 index 0000000..4ed286f --- /dev/null +++ b/day1/rust/main.rs @@ -0,0 +1,31 @@ +use std::fs::File; +use std::io::{BufRead, BufReader}; + +fn main() { + let reader = BufReader::new(File::open("../input").unwrap()); + + let mut result_part_one: i64 = 0; + let mut result_part_two: i64 = 0; + + for line in reader.lines() { + let n = line.unwrap().parse::().unwrap(); + result_part_one += calculate_fuel1(n); + result_part_two += calculate_fuel2(n); + } + println!("Solution for Part One: {}", result_part_one); + println!("Solution for Part Two: {}", result_part_two); +} + +fn calculate_fuel1(mass: i64) -> i64 { + let fuel = mass / 3 - 2; + return fuel +} + +fn calculate_fuel2(mass: i64) -> i64 { + let fuel = mass / 3 - 2; + if fuel < 0 { + return 0; + } else { + return (fuel) + calculate_fuel2(fuel); + } +} diff --git a/day1/rust/src/main.rs b/day1/rust/src/main.rs deleted file mode 100644 index ad5fdc8..0000000 --- a/day1/rust/src/main.rs +++ /dev/null @@ -1,30 +0,0 @@ -use std::fs::File; -use std::env; -use std::io::{Error, BufRead, BufReader}; - -fn main() -> Result<(), Error> { - let args: Vec = env::args().collect(); - - let filename = &args[1]; - - let reader = BufReader::new(File::open(filename).unwrap()); - - let mut result: i64 = 0; - - for line in reader.lines() { - let n = line.unwrap().parse::().unwrap(); - result += calculate_fuel(n); - } - println!("Result: {}", result); - - Ok(()) -} - -fn calculate_fuel(mass: i64) -> i64 { - let fuel = mass / 3 - 2; - if fuel < 0 { - return 0; - } else { - return (fuel) + calculate_fuel(fuel); - } -}