I realized having to host this potentially indefinitely might not be the best idea, so I am going to shut down this gitea instance eventually.
You’ll have time, at least until the end of 2022, probably longer, but please just get all your stuff somewhere safe in case we ever disappear.
If any of your build scripts rely on my (kageru’s) projects hosted here, check my Github or IEW on Github for encoding projects. If you can’t find what you’re looking there, tell me to migrate it.

day4 done, but code needs to be refactored

master
attila 4 years ago
parent 2eb8adf620
commit fa6bd59445

4
day4/Cargo.lock generated

@ -0,0 +1,4 @@
[[package]]
name = "day4"
version = "0.1.0"

@ -0,0 +1,6 @@
[package]
name = "day4"
version = "0.1.0"
authors = ["attila <daf276@gmx.de>"]
[dependencies]

File diff suppressed because it is too large Load Diff

@ -0,0 +1,76 @@
use std::fs;
use std::collections::HashMap;
fn main() {
let file = fs::read_to_string("input").expect("Unable to read file");
let mut lines: Vec<&str> = file.split("\n").collect();
lines.sort();
let mut times = HashMap::new();
let mut guards = HashMap::new();
let mut start = 0;
let mut end = 0;
let mut guard = 0;
for line in lines {
let r = line.split(|c| c == '-' || c == ' ' || c == ':' || c == ':' || c == ']').collect::<Vec<&str>>();
if r[7].contains("#") {
let number = r[7].split("#").collect::<Vec<&str>>();
guard = number[1].parse::<i32>().unwrap();
}
if r[7] == "asleep" {
start = r[4].parse::<i32>().unwrap();
}
if r[7] == "up" {
end = r[4].parse::<i32>().unwrap();
*times.entry(guard).or_insert(end - start) += end - start;
for i in start..end {
*guards.entry((guard, i)).or_insert(0) +=1;
}
}
}
//Part1
let max_time_asleep = *times.values().into_iter().max().unwrap();
let mut guard_who_slept_most = 0;
for (key, value) in times {
if value == max_time_asleep {
guard_who_slept_most = key;
}
}
let mut minute_most_asleep = 0;
let mut times_asleep_in_same_minute = 0;
for ((guard, minute), no_times_asleep_in_same_minute) in &guards{
if guard == &guard_who_slept_most && no_times_asleep_in_same_minute >= &times_asleep_in_same_minute{
times_asleep_in_same_minute = *no_times_asleep_in_same_minute;
minute_most_asleep = *minute;
}
}
//Part2
let mut max_no_times_asleep_in_same_minute = 0;
let mut final_minute= 0;
let mut test = 0;
for ((guard, minute), no_times_asleep_in_same_minute) in &guards{
if no_times_asleep_in_same_minute > &max_no_times_asleep_in_same_minute {
max_no_times_asleep_in_same_minute = *no_times_asleep_in_same_minute;
final_minute = *minute;
test = *guard;
}
}
println!("{}", minute_most_asleep as i32 *guard_who_slept_most);
println!("{}", test*final_minute);
}
Loading…
Cancel
Save