things before changing
This commit is contained in:
parent
49174cafd5
commit
9bc58421c7
@ -98,4 +98,3 @@ Game 97: 5 green, 13 red, 7 blue; 2 blue, 12 red, 6 green; 10 blue, 11 red, 3 gr
|
|||||||
Game 98: 3 blue, 1 red; 4 blue; 2 green, 1 blue; 2 green, 1 red, 5 blue
|
Game 98: 3 blue, 1 red; 4 blue; 2 green, 1 blue; 2 green, 1 red, 5 blue
|
||||||
Game 99: 4 green, 3 blue, 9 red; 6 blue, 5 red, 3 green; 2 green, 4 blue, 7 red; 8 red, 4 blue; 2 green, 15 red; 4 red, 5 blue, 3 green
|
Game 99: 4 green, 3 blue, 9 red; 6 blue, 5 red, 3 green; 2 green, 4 blue, 7 red; 8 red, 4 blue; 2 green, 15 red; 4 red, 5 blue, 3 green
|
||||||
Game 100: 8 red, 4 blue, 4 green; 10 blue, 3 red, 4 green; 10 green, 4 red; 18 red, 9 blue, 2 green; 12 red, 4 green, 2 blue
|
Game 100: 8 red, 4 blue, 4 green; 10 blue, 3 red, 4 green; 10 green, 4 red; 18 red, 9 blue, 2 green; 12 red, 4 green, 2 blue
|
||||||
|
|
||||||
|
|||||||
5
input_sources/day2short.txt
Normal file
5
input_sources/day2short.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
|
||||||
|
Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
|
||||||
|
Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
|
||||||
|
Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
|
||||||
|
Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green
|
||||||
@ -1,6 +1,4 @@
|
|||||||
use std::fs::File;
|
use crate::utils::read_lines;
|
||||||
use std::io::{self, BufRead};
|
|
||||||
use std::path::Path;
|
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
pub fn process() -> u32 {
|
pub fn process() -> u32 {
|
||||||
@ -108,13 +106,6 @@ fn process_line(input_line: String) -> u32 {
|
|||||||
String::from(first_number.to_owned() + &last_number).trim().parse::<u32>().unwrap()
|
String::from(first_number.to_owned() + &last_number).trim().parse::<u32>().unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fn read_lines<P>(filename: P) -> io::Result<io::Lines<io::BufReader<File>>>
|
|
||||||
where P: AsRef<Path>, {
|
|
||||||
let file = File::open(filename)?;
|
|
||||||
Ok(io::BufReader::new(file).lines())
|
|
||||||
}
|
|
||||||
|
|
||||||
fn extract_numbers_from_string(input: String) -> u32 {
|
fn extract_numbers_from_string(input: String) -> u32 {
|
||||||
let mut nums_in_string: Vec<char> = vec![];
|
let mut nums_in_string: Vec<char> = vec![];
|
||||||
for char in input.chars() {
|
for char in input.chars() {
|
||||||
|
|||||||
@ -1,3 +1,68 @@
|
|||||||
pub fn process() {
|
use crate::utils::read_lines;
|
||||||
println!("Hello from Day 2!");
|
|
||||||
|
const RED_MAX: u32 = 12;
|
||||||
|
const GREEN_MAX: u32 = 13;
|
||||||
|
const BLUE_MAX: u32 = 14;
|
||||||
|
|
||||||
|
static mut RED_MIN: u32 = 0;
|
||||||
|
static mut GREEN_MIN: u32 = 0;
|
||||||
|
static mut BLUE_MIN: u32 = 0;
|
||||||
|
|
||||||
|
pub fn process() -> u32 {
|
||||||
|
let file_path = "./input_sources/day2short.txt";
|
||||||
|
let mut total: u32 = 0;
|
||||||
|
if let Ok(lines) = read_lines(file_path) {
|
||||||
|
for game in lines.flatten() {
|
||||||
|
check_if_game_is_valid(game.clone());
|
||||||
|
// println!("{:?}", is_game_valid);
|
||||||
|
if is_game_valid {
|
||||||
|
let game_id: u32 = get_game_id(game.clone());
|
||||||
|
total = total + game_id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
total
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fn get_game_id(input_line: String) -> u32 {
|
||||||
|
let game_section: Vec<&str> = input_line.split(":").collect();
|
||||||
|
let game_section_split: Vec<&str> = game_section[0].split(" ").collect();
|
||||||
|
game_section_split[1].trim().parse().unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn check_if_game_is_valid(game: String) -> bool {
|
||||||
|
let split_on_colon: Vec<&str> = game.split(":").collect();
|
||||||
|
let game_results: Vec<&str> = split_on_colon[1].split(";").collect();
|
||||||
|
let mut valid_game: bool = true;
|
||||||
|
|
||||||
|
for game_result in game_results {
|
||||||
|
let selections: Vec<&str> = game_result.split(",").collect();
|
||||||
|
for selection in selections {
|
||||||
|
let split_selection: Vec<&str> = selection.trim().split(" ").collect();
|
||||||
|
let num_selected: u32 = split_selection[0].trim().parse().unwrap();
|
||||||
|
let color_selected: &str = split_selection[1].trim();
|
||||||
|
|
||||||
|
match color_selected {
|
||||||
|
"green" => {
|
||||||
|
if num_selected > GREEN_MIN {
|
||||||
|
GREEN_MIN = num_selected;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"blue" => {
|
||||||
|
if num_selected > BLUE_MIN {
|
||||||
|
BLUE_MIN = num_selected;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"red" => {
|
||||||
|
if num_selected > RED_MIN {
|
||||||
|
RED_MIN = num_selected;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
&_ => todo!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
valid_game
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,11 +1,15 @@
|
|||||||
#![allow(warnings)]
|
#![allow(warnings)]
|
||||||
mod day1;
|
mod day1;
|
||||||
mod day2;
|
mod day2;
|
||||||
|
mod utils;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
|
||||||
let day1_results = day1::process();
|
let day1_results = day1::process();
|
||||||
let day2_results = day2::process();
|
let day2_results = day2::process();
|
||||||
|
|
||||||
println!("The Answer to Day 1 is: {:?}", day1_results)
|
println!("The Answer to Day 1 is: {:?}", day1_results);
|
||||||
|
println!("The Answer to Day 2 is: {:?}", day2_results);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
10
src/utils/mod.rs
Normal file
10
src/utils/mod.rs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
use std::fs::File;
|
||||||
|
use std::io::{self, BufRead};
|
||||||
|
use std::path::Path;
|
||||||
|
|
||||||
|
pub fn read_lines<P>(filename: P) -> io::Result<io::Lines<io::BufReader<File>>>
|
||||||
|
where P: AsRef<Path>, {
|
||||||
|
let file = File::open(filename)?;
|
||||||
|
Ok(io::BufReader::new(file).lines())
|
||||||
|
}
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user