init
This commit is contained in:
commit
ca9736d8ec
122 files changed
+28514
No files matched your search
@@ -0,0 +1,65 @@
|
||||
use std::{fs, vec};
|
||||
|
||||
const FILE_PATH: &str = "./input.text";
|
||||
|
||||
fn process_line(line: &str) -> i32
|
||||
{
|
||||
let mut cards_won = 0;
|
||||
|
||||
// Line processing
|
||||
let line_halves: Vec<&str> = line.split(" | ").collect();
|
||||
|
||||
let first_half: Vec<&str> = line_halves[0].split(": ").collect();
|
||||
|
||||
let winning_numbers: Vec<&str> = first_half[1].split(" ").filter(|num| !num.is_empty()).collect();
|
||||
|
||||
let my_numbers = line_halves[1].split(" ").filter(|num| !num.is_empty());
|
||||
|
||||
for number in my_numbers
|
||||
{
|
||||
if winning_numbers.contains(&number)
|
||||
{
|
||||
cards_won += 1;
|
||||
}
|
||||
}
|
||||
|
||||
return cards_won;
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let contents = fs::read_to_string(FILE_PATH)
|
||||
.unwrap();
|
||||
|
||||
let lines: Vec<&str> = contents.lines().collect();
|
||||
|
||||
let mut cards_won_sum: i64 = 0;
|
||||
let mut card_values: Vec<(usize, i32)> = Vec::new();
|
||||
|
||||
for index in 0..lines.len()
|
||||
{
|
||||
let mut temp_vec = vec![(index, process_line(lines[index]))];
|
||||
card_values.append(&mut temp_vec);
|
||||
|
||||
}
|
||||
|
||||
let mut cards_won: Vec<(usize, i32)> = card_values.clone();
|
||||
|
||||
while !cards_won.is_empty()
|
||||
{
|
||||
let mut temp_cards_won: Vec<(usize, i32)> = Vec::new();
|
||||
for (index, cards_won_value) in cards_won.clone()
|
||||
{
|
||||
cards_won_sum += 1;
|
||||
for i in (index + 1)..(index + 1 + cards_won_value as usize)
|
||||
{
|
||||
let mut temp_vec: Vec<(usize, i32)> = vec![(i, card_values[i].1)];
|
||||
temp_cards_won.append(&mut temp_vec);
|
||||
}
|
||||
}
|
||||
|
||||
cards_won = temp_cards_won;
|
||||
}
|
||||
|
||||
|
||||
println!("Total cards won: {cards_won_sum}");
|
||||
}
|
||||
Reference in new issue
Block a user