Compare commits
No commits in common. "2b85cd754b113a76608b5e33c5666114790b4fe8" and "dab145d2d40ae0934c7911ae1eb55c9ab445f1be" have entirely different histories.
2b85cd754b
...
dab145d2d4
9 changed files with 3 additions and 2142 deletions
6
Cargo.lock
generated
6
Cargo.lock
generated
|
@ -3,9 +3,5 @@
|
||||||
version = 3
|
version = 3
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "day1"
|
name = "helloworld"
|
||||||
version = "0.1.0"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "day2"
|
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
[workspace]
|
[workspace]
|
||||||
members = ["day1", "day2"]
|
members = ["day1"]
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|
1001
day1/input.txt
1001
day1/input.txt
File diff suppressed because it is too large
Load diff
|
@ -1,11 +1,3 @@
|
||||||
|
|
||||||
mod part1;
|
|
||||||
mod part2;
|
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
println!("Hello, world!");
|
||||||
part1::part1();
|
|
||||||
part2::part2();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,37 +0,0 @@
|
||||||
use std::fs;
|
|
||||||
|
|
||||||
pub fn part1() {
|
|
||||||
let file_contents = fs::read_to_string("./input.txt").unwrap();
|
|
||||||
|
|
||||||
let sum: i64 = file_contents
|
|
||||||
.lines()
|
|
||||||
.map(|x| sum_first_last(x))
|
|
||||||
.sum::<i64>();
|
|
||||||
println!("Answer is: {}", sum);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn sum_first_last(input: &str) -> i64 {
|
|
||||||
let mut first: i64 = -64;
|
|
||||||
let mut last: i64 = -64;
|
|
||||||
let _: Vec<_> = input
|
|
||||||
.chars()
|
|
||||||
.map(|x| {
|
|
||||||
if char::is_digit(x, 10) {
|
|
||||||
if first == -64 {
|
|
||||||
first = char::to_digit(x, 10).unwrap() as i64;
|
|
||||||
} else {
|
|
||||||
last = char::to_digit(x, 10).unwrap() as i64;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}).collect();
|
|
||||||
|
|
||||||
if first == -64 {
|
|
||||||
first = 0;
|
|
||||||
}
|
|
||||||
if last == -64 {
|
|
||||||
last = first.clone();
|
|
||||||
}
|
|
||||||
|
|
||||||
return first * 10 + last;
|
|
||||||
}
|
|
|
@ -1,80 +0,0 @@
|
||||||
use std::fs;
|
|
||||||
|
|
||||||
pub fn part2() {
|
|
||||||
|
|
||||||
let file_contents = fs::read_to_string("./input.txt").unwrap();
|
|
||||||
|
|
||||||
let sum: i64 = file_contents
|
|
||||||
.lines()
|
|
||||||
.map(|x| sum_first_last(x))
|
|
||||||
.sum::<i64>();
|
|
||||||
println!("Answer is: {}", sum);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn sum_first_last(input: &str) -> i64 {
|
|
||||||
let mut first: i64 = -64;
|
|
||||||
let mut last: i64 = -64;
|
|
||||||
|
|
||||||
|
|
||||||
let _: Vec<_> = input
|
|
||||||
.lines()
|
|
||||||
.map(|line| {
|
|
||||||
// if !line.contains(["one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]){
|
|
||||||
for n in 0..line.len() {
|
|
||||||
if char::is_digit(line.chars().nth(n).unwrap(), 10){
|
|
||||||
if first == -64 {
|
|
||||||
first = char::to_digit(line.chars().nth(n).unwrap(), 10).unwrap() as i64;
|
|
||||||
} else {
|
|
||||||
last = char::to_digit(line.chars().nth(n).unwrap(), 10).unwrap() as i64;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
let val = get_str_num(line.get(n..).unwrap());
|
|
||||||
match val {
|
|
||||||
Some(val) => {
|
|
||||||
if first == -64 {
|
|
||||||
first = val;
|
|
||||||
} else {
|
|
||||||
last = val;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
None => {}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}).collect();
|
|
||||||
|
|
||||||
if first == -64 {
|
|
||||||
first = 0;
|
|
||||||
}
|
|
||||||
if last == -64 {
|
|
||||||
last = first.clone();
|
|
||||||
}
|
|
||||||
|
|
||||||
return first * 10 + last;
|
|
||||||
}
|
|
||||||
|
|
||||||
fn get_str_num(x: &str) -> Option<i64> {
|
|
||||||
// check timing of branch pre-check version
|
|
||||||
if x.starts_with("one") {
|
|
||||||
Some(1)
|
|
||||||
} else if x.starts_with("two") {
|
|
||||||
Some(2)
|
|
||||||
} else if x.starts_with("three") {
|
|
||||||
Some(3)
|
|
||||||
} else if x.starts_with("four") {
|
|
||||||
Some(4)
|
|
||||||
} else if x.starts_with("five") {
|
|
||||||
Some(5)
|
|
||||||
} else if x.starts_with("six") {
|
|
||||||
Some(6)
|
|
||||||
} else if x.starts_with("seven") {
|
|
||||||
Some(7)
|
|
||||||
} else if x.starts_with("eight") {
|
|
||||||
Some(8)
|
|
||||||
} else if x.starts_with("nine") {
|
|
||||||
Some(9)
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
[package]
|
|
||||||
name = "day2"
|
|
||||||
version = "0.1.0"
|
|
||||||
edition = "2021"
|
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
||||||
|
|
||||||
[dependencies]
|
|
1001
day2/input.txt
1001
day2/input.txt
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue