You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
1.7 KiB

use std::fs;
fn collect_data() -> Vec<String> {
let data = fs::read_to_string("src/day2/input.txt").expect("Unable to read file");
let eachline: Vec<String> = data.split("\n").map(str::to_string).collect();
return eachline;
}
fn get_points_for_match(mat: &str) -> i32 {
let items: Vec<String> = mat.split(" ").map(str::to_string).collect();
let mut points = 0;
if items[1] == "X" {
points += 1;
} else if items[1] == "Y" {
points += 2;
} else if items[1] == "Z" {
points += 3;
}
if (items[0] == "C" && items[1] == "X")
|| (items[0] == "B" && items[1] == "Z")
|| (items[0] == "A" && items[1] == "Y")
{
points += 6
} else if (items[0] == "A" && items[1] == "Z")
|| (items[0] == "C" && items[1] == "Y")
|| (items[0] == "B" && items[1] == "X")
{
points += 0;
} else {
points += 3;
}
return points;
}
fn get_points_for_match_2(mat: &str) -> i32 {
let items: Vec<String> = mat.split(" ").map(str::to_string).collect();
let mut points = 0;
if items[1] == "Y" {
points += 3
} else if items[1] == "Z" {
points += 6;
}
if items[0] == "A" {
points += 2;
} else if items[0] == "B" {
points += 3;
} else if items[0] == "C" {
points += 1;
}
return points;
}
pub fn step1() -> i32 {
let items = collect_data();
let mut total = 0;
for item in items {
total += get_points_for_match(&item);
}
return total;
}
pub fn step2() -> i32 {
let items = collect_data();
let mut total = 0;
for item in items {
total += get_points_for_match_2(&item);
}
return total;
}