formatted everything with rustfmt
This commit is contained in:
9
src/day03/Cargo.lock
generated
9
src/day03/Cargo.lock
generated
@@ -5,3 +5,12 @@ version = 4
|
||||
[[package]]
|
||||
name = "day03"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"iter-first-max",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "iter-first-max"
|
||||
version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "42ace18d32276b4ce7d8261c06b376398a4ea82e4715a5b37e46fddbff41a617"
|
||||
|
||||
@@ -1,23 +1,32 @@
|
||||
use iter_first_max::IterFirstMaxExt;
|
||||
use std::fs::File;
|
||||
use std::io::Read;
|
||||
use iter_first_max::IterFirstMaxExt;
|
||||
|
||||
pub fn solve() -> u64 {
|
||||
let mut solution: u64 = 0;
|
||||
|
||||
let mut file: File = File::open("src/day03/input03.txt").unwrap();
|
||||
let mut file_content: String = String::new();
|
||||
file.read_to_string(&mut file_content).expect("Can't read file");
|
||||
file.read_to_string(&mut file_content)
|
||||
.expect("Can't read file");
|
||||
|
||||
file_content.lines().for_each(|battery_bank| {
|
||||
let batteries = battery_bank.chars().map(|c| c as u8 - 0x30).collect::<Vec<u8>>();
|
||||
let (i, biggest_battery) = batteries.iter().enumerate().first_max_by_key(|(_, v)| *v).unwrap();
|
||||
solution += if i < battery_bank.len()-1 {
|
||||
10 * biggest_battery + batteries[i+1..].iter().max().unwrap()
|
||||
let batteries = battery_bank
|
||||
.chars()
|
||||
.map(|c| c as u8 - 0x30)
|
||||
.collect::<Vec<u8>>();
|
||||
let (i, biggest_battery) = batteries
|
||||
.iter()
|
||||
.enumerate()
|
||||
.first_max_by_key(|(_, v)| *v)
|
||||
.unwrap();
|
||||
solution += if i < battery_bank.len() - 1 {
|
||||
10 * biggest_battery + batteries[i + 1..].iter().max().unwrap()
|
||||
} else {
|
||||
10 * batteries[..i].iter().max().unwrap() + biggest_battery
|
||||
} as u64;
|
||||
});
|
||||
|
||||
solution
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use iter_first_max::IterFirstMaxExt;
|
||||
use std::fs::File;
|
||||
use std::io::Read;
|
||||
use iter_first_max::IterFirstMaxExt;
|
||||
|
||||
fn get_n_max(vec: &Vec<u8>, n: usize) -> Vec<u8> {
|
||||
let mut n = n;
|
||||
@@ -14,10 +14,9 @@ fn get_n_max(vec: &Vec<u8>, n: usize) -> Vec<u8> {
|
||||
max.push(*biggest);
|
||||
if i > vec.len() - 1 - n {
|
||||
n -= vec.len() - i - 1;
|
||||
max.append(&mut vec[i+1..].to_vec());
|
||||
}
|
||||
else {
|
||||
let mut found = get_n_max(&vec[i+1..].to_vec(), n);
|
||||
max.append(&mut vec[i + 1..].to_vec());
|
||||
} else {
|
||||
let mut found = get_n_max(&vec[i + 1..].to_vec(), n);
|
||||
n -= found.len();
|
||||
max.append(&mut found);
|
||||
}
|
||||
@@ -39,14 +38,22 @@ pub fn solve() -> u64 {
|
||||
|
||||
let mut file: File = File::open("src/day03/input03.txt").unwrap();
|
||||
let mut file_content: String = String::new();
|
||||
file.read_to_string(&mut file_content).expect("Can't read file");
|
||||
file.read_to_string(&mut file_content)
|
||||
.expect("Can't read file");
|
||||
|
||||
file_content.lines().for_each(|battery_bank| {
|
||||
let batteries = battery_bank.chars().map(|c| c as u8 - 0x30).collect::<Vec<u8>>();
|
||||
get_n_max(&batteries, 12).iter().enumerate().for_each(|(i, battery)| {
|
||||
solution += *battery as u64 * 10u64.pow(11 - i as u32);
|
||||
});
|
||||
let batteries = battery_bank
|
||||
.chars()
|
||||
.map(|c| c as u8 - 0x30)
|
||||
.collect::<Vec<u8>>();
|
||||
get_n_max(&batteries, 12)
|
||||
.iter()
|
||||
.enumerate()
|
||||
.for_each(|(i, battery)| {
|
||||
solution += *battery as u64 * 10u64.pow(11 - i as u32);
|
||||
});
|
||||
});
|
||||
|
||||
solution
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user