summaryrefslogtreecommitdiffstats
path: root/day1
diff options
context:
space:
mode:
authorJan Tuomi <jan.tuomi@eficode.com>2018-12-04 15:42:54 +0200
committerJan Tuomi <jan.tuomi@eficode.com>2018-12-04 15:42:54 +0200
commitf70c926c17bc244bf51e8c05d891b0b13528fe8a (patch)
treead58a4ed55f257a668cceee88d2465a4c066ac38 /day1
Initial commit
Diffstat (limited to 'day1')
-rw-r--r--day1/.gitignore3
-rw-r--r--day1/Cargo.lock4
-rw-r--r--day1/Cargo.toml6
-rw-r--r--day1/src/main.rs41
4 files changed, 54 insertions, 0 deletions
diff --git a/day1/.gitignore b/day1/.gitignore
new file mode 100644
index 0000000..a7de3a7
--- /dev/null
+++ b/day1/.gitignore
@@ -0,0 +1,3 @@
+/target
+**/*.rs.bk
+input.txt
diff --git a/day1/Cargo.lock b/day1/Cargo.lock
new file mode 100644
index 0000000..7441fae
--- /dev/null
+++ b/day1/Cargo.lock
@@ -0,0 +1,4 @@
+[[package]]
+name = "day1"
+version = "0.1.0"
+
diff --git a/day1/Cargo.toml b/day1/Cargo.toml
new file mode 100644
index 0000000..1084a3f
--- /dev/null
+++ b/day1/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "day1"
+version = "0.1.0"
+authors = ["Jan Tuomi <jan.tuomi@eficode.com>"]
+
+[dependencies]
diff --git a/day1/src/main.rs b/day1/src/main.rs
new file mode 100644
index 0000000..f9b93ce
--- /dev/null
+++ b/day1/src/main.rs
@@ -0,0 +1,41 @@
+use std::env;
+use std::io::BufReader;
+use std::io::BufRead;
+use std::fs::File;
+use std::process;
+
+fn main() {
+ let args: Vec<String> = env::args().collect();
+ if args.len() != 2 {
+ println!("Wrong number of arguments. Provide just a file name.");
+ process::exit(1);
+ }
+ let filename = &args[1];
+ println!("Using file {} as input.", filename);
+ let f = match File::open(filename) {
+ Ok(file) => file,
+ Err(e) => {
+ println!("Failed to open file {}. {:?}", filename, e);
+ process::exit(1);
+ }
+ };
+ let file = BufReader::new(&f);
+
+ let mut diffs: Vec<i32> = Vec::new();
+ for line in file.lines() {
+ let l = line.unwrap();
+ let res = l.parse::<i32>();
+ match res {
+ Ok(value) => {
+ diffs.push(value);
+ }
+ Err(e) => {
+ println!("{:?}. l: {:?}", e, l);
+ process::exit(1);
+ }
+ }
+ }
+
+ let result: i32 = diffs.iter().fold(0, |acc, x| acc + x);
+ println!("{}", result);
+}