|
@ -16,18 +16,32 @@ fn main() { |
|
|
let mut times = vec![];
|
|
|
let mut times = vec![];
|
|
|
|
|
|
|
|
|
for t in strings.split(", ") {
|
|
|
for t in strings.split(", ") {
|
|
|
|
|
|
// split t on '|' and gather ints for h,m,s
|
|
|
let e: Vec<_> = t.split('|')
|
|
|
let e: Vec<_> = t.split('|')
|
|
|
.map(|i| i.parse::<i32>().unwrap())
|
|
|
|
|
|
|
|
|
.map(|i| i.parse::<usize>().unwrap())
|
|
|
.collect();
|
|
|
.collect();
|
|
|
|
|
|
// convert h,m,s into total seconds
|
|
|
times.push(e[0]*3600 + e[1]*60 + e[2])
|
|
|
times.push(e[0]*3600 + e[1]*60 + e[2])
|
|
|
}
|
|
|
}
|
|
|
let times_orig = times.clone();
|
|
|
|
|
|
times.sort();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
times.sort_unstable();
|
|
|
|
|
|
|
|
|
println!("\n{:?}\n{:?}\n{:?}\n",
|
|
|
|
|
|
times_orig,
|
|
|
|
|
|
times,
|
|
|
|
|
|
times.iter().sum::<i32>(),
|
|
|
|
|
|
|
|
|
let tot = times.iter().sum::<usize>();
|
|
|
|
|
|
let len = times.len();
|
|
|
|
|
|
let avg = tot/len;
|
|
|
|
|
|
let rng = times[len-1] - times[0];
|
|
|
|
|
|
let med = if len%2 == 1 {
|
|
|
|
|
|
times[len/2]
|
|
|
|
|
|
} else {
|
|
|
|
|
|
(times[len/2-1] + times[len])/2
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
let format_time = |s| {
|
|
|
|
|
|
format!("{:02}|{:02}|{:02}", s/3600, s%3600/60, s%60)
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
println!("Range: {} Average: {} Median: {}",
|
|
|
|
|
|
format_time(rng), format_time(avg), format_time(med)
|
|
|
);
|
|
|
);
|
|
|
println!();
|
|
|
println!();
|
|
|
}
|
|
|
}
|
|
|