day two
This commit is contained in:
parent
f23deb97e9
commit
e534f10134
@ -14,7 +14,7 @@ fn main() {
|
|||||||
println!(
|
println!(
|
||||||
"p1: {}ms, p2: {}ms",
|
"p1: {}ms, p2: {}ms",
|
||||||
part_one_duration.as_millis(),
|
part_one_duration.as_millis(),
|
||||||
part_two_duration.as_millis()
|
(part_two_duration - part_one_duration).as_millis()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
70
02/main.rs
Normal file
70
02/main.rs
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
#![allow(dead_code)]
|
||||||
|
use std::fs::File;
|
||||||
|
use std::io;
|
||||||
|
use std::io::BufRead;
|
||||||
|
use std::path::Path;
|
||||||
|
use std::time::Instant;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let now = Instant::now();
|
||||||
|
part_one();
|
||||||
|
let part_one_duration = now.elapsed();
|
||||||
|
part_two();
|
||||||
|
let part_two_duration = now.elapsed();
|
||||||
|
println!(
|
||||||
|
"p1: {}ms, p2: {}ms",
|
||||||
|
part_one_duration.as_millis(),
|
||||||
|
(part_two_duration - part_one_duration).as_millis()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn read_lines<P>(filename: P) -> io::Result<io::Lines<io::BufReader<File>>>
|
||||||
|
where
|
||||||
|
P: AsRef<Path>,
|
||||||
|
{
|
||||||
|
// note that this discards a final newline
|
||||||
|
let file = File::open(filename)?;
|
||||||
|
Ok(io::BufReader::new(file).lines())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part_one() {
|
||||||
|
if let Ok(lines) = read_lines("./inputs/input") {
|
||||||
|
let mut score = 0;
|
||||||
|
for line in lines {
|
||||||
|
let l = line.unwrap();
|
||||||
|
let them = l.chars().nth(0).unwrap() as u32 - 64;
|
||||||
|
let you = l.chars().nth(2).unwrap() as u32 - 87;
|
||||||
|
score += you;
|
||||||
|
// 1 is Rock
|
||||||
|
// 2 is Paper
|
||||||
|
// 3 is Scissors
|
||||||
|
if you == them {
|
||||||
|
score += 3;
|
||||||
|
} else if them == 1 && you == 2 {
|
||||||
|
score += 6
|
||||||
|
} else if them == 2 && you == 3 {
|
||||||
|
score += 6
|
||||||
|
} else if them == 3 && you == 1 {
|
||||||
|
score += 6
|
||||||
|
}
|
||||||
|
}
|
||||||
|
println!("{}", score)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part_two() {
|
||||||
|
if let Ok(lines) = read_lines("./inputs/input") {
|
||||||
|
let mut score = 0;
|
||||||
|
for line in lines {
|
||||||
|
let l = line.unwrap();
|
||||||
|
let them = l.chars().nth(0).unwrap() as u32 - 64;
|
||||||
|
let outcome = l.chars().nth(2).unwrap() as u32 - 87;
|
||||||
|
// 1 is Rock / you lose
|
||||||
|
// 2 is Paper / you tie
|
||||||
|
// 3 is Scissors / you win
|
||||||
|
// compute what you throw plus the score of the round
|
||||||
|
score += ((them + outcome) % 3) + 1 + (outcome - 1) * 3;
|
||||||
|
}
|
||||||
|
println!("{}", score)
|
||||||
|
}
|
||||||
|
}
|
@ -14,7 +14,7 @@ fn main() {
|
|||||||
println!(
|
println!(
|
||||||
"p1: {}ms, p2: {}ms",
|
"p1: {}ms, p2: {}ms",
|
||||||
part_one_duration.as_millis(),
|
part_one_duration.as_millis(),
|
||||||
part_two_duration.as_millis()
|
(part_two_duration - part_one_duration).as_millis()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user