-
Notifications
You must be signed in to change notification settings - Fork 0
/
part1.rs
60 lines (49 loc) · 1.34 KB
/
part1.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// adventofcode - day 12
// part 1
use std::io::prelude::*;
use std::fs::File;
fn main(){
println!("Advent of Code - day 12 | part 1");
// import data
let data = import_data();
let mut value = 0i32;
let mut tmp_val = 0i32;
let mut last: char = '\x00';
let mut multiplier = 1;
for ch in data.chars() {
value += match ch {
'0'...'9' => {
if last == '-' {
multiplier = -1;
}
tmp_val = tmp_val * 10 + match ch.to_string().parse::<i32>() {
Ok(x) => x,
Err(e) => panic!("Help! {}", e),
};
0
},
_ if last.is_digit(10) => {
let tmp = tmp_val * multiplier;
tmp_val = 0;
multiplier = 1;
tmp
}
_ => 0,
};
last = ch;
}
println!("Value: {}", value);
}
// This function simply imports the data set from a file called input.txt
fn import_data() -> String {
let mut file = match File::open("../../inputs/12.txt") {
Ok(f) => f,
Err(e) => panic!("file error: {}", e),
};
let mut data = String::new();
match file.read_to_string(&mut data){
Ok(_) => {},
Err(e) => panic!("file error: {}", e),
};
data
}