Browse Source

Rough working copy...

switch to sort_unstable, per clippy insistance
generate time format '00|00|00' separate from output line
master
Jim Infield 3 years ago
parent
commit
25e853c9de
  1. 28
      src/main.rs

28
src/main.rs

@ -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();
println!("\n{:?}\n{:?}\n{:?}\n",
times_orig,
times,
times.iter().sum::<i32>(),
times.sort_unstable();
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!();
} }

Loading…
Cancel
Save