diff options
| author | Jan Tuomi <jan.tuomi@eficode.com> | 2018-12-04 15:42:54 +0200 |
|---|---|---|
| committer | Jan Tuomi <jan.tuomi@eficode.com> | 2018-12-04 15:42:54 +0200 |
| commit | f70c926c17bc244bf51e8c05d891b0b13528fe8a (patch) | |
| tree | ad58a4ed55f257a668cceee88d2465a4c066ac38 /day1 | |
Initial commit
Diffstat (limited to 'day1')
| -rw-r--r-- | day1/.gitignore | 3 | ||||
| -rw-r--r-- | day1/Cargo.lock | 4 | ||||
| -rw-r--r-- | day1/Cargo.toml | 6 | ||||
| -rw-r--r-- | day1/src/main.rs | 41 |
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); +} |
