Compare commits

...

2 Commits

Author SHA1 Message Date
Joey Pollack 1f6d97bcc8 Adds verbose print option to the solver 1 year ago
Joey Pollack 7f4dd970d5 day 6 complete 1 year ago

@ -16,6 +16,8 @@ pub struct Day1
data_set: DataSet, data_set: DataSet,
run_mode: RunMode, run_mode: RunMode,
do_debug_prints: bool, do_debug_prints: bool,
do_verbose_prints: bool,
data_a: Vec<i32>, data_a: Vec<i32>,
data_b: Vec<i32>, data_b: Vec<i32>,
distances: Vec<i32>, distances: Vec<i32>,
@ -29,7 +31,16 @@ impl Day1
{ {
pub fn new() -> Day1 pub fn new() -> Day1
{ {
Day1 { data_set: DataSet::Test, run_mode: RunMode::FirstCase, do_debug_prints: false, data_a: vec![], data_b: vec![], distances: vec![], final_result: 0 } Day1 {
data_set: DataSet::Test,
run_mode: RunMode::FirstCase,
do_debug_prints: false,
do_verbose_prints: false,
data_a: vec![],
data_b: vec![],
distances: vec![],
final_result: 0
}
} }
fn solve_first_case(self: &mut Self) -> String fn solve_first_case(self: &mut Self) -> String
@ -103,11 +114,12 @@ impl Solver for Day1
println!("DATA: {}", data); println!("DATA: {}", data);
} }
fn init(self: &mut Self, data_set: DataSet, run_mode: RunMode, enable_debug_prints: bool) fn init(self: &mut Self, data_set: DataSet, run_mode: RunMode, enable_debug_prints: bool, enable_verbose_prints: bool)
{ {
self.data_set = data_set; self.data_set = data_set;
self.run_mode = run_mode; self.run_mode = run_mode;
self.do_debug_prints = enable_debug_prints; self.do_debug_prints = enable_debug_prints;
self.do_verbose_prints = enable_verbose_prints;
let dir = utils::get_working_dir(); let dir = utils::get_working_dir();
let data_filename = let data_filename =

@ -17,6 +17,8 @@ pub struct Day2
data_set: DataSet, data_set: DataSet,
run_mode: RunMode, run_mode: RunMode,
do_debug_prints: bool, do_debug_prints: bool,
do_verbose_prints: bool,
reports: Vec<Report>, reports: Vec<Report>,
pub final_result: i32, pub final_result: i32,
} }
@ -28,7 +30,14 @@ impl Day2
{ {
pub fn new() -> Day2 pub fn new() -> Day2
{ {
Day2 { data_set: DataSet::Test, run_mode: RunMode::FirstCase, do_debug_prints: false, reports: vec![], final_result: 0 } Day2 {
data_set: DataSet::Test,
run_mode: RunMode::FirstCase,
do_debug_prints: false,
do_verbose_prints: false,
reports: vec![],
final_result: 0
}
} }
} }
@ -42,11 +51,12 @@ impl Solver for Day2
println!("DAY 2 TEST PRINT"); println!("DAY 2 TEST PRINT");
} }
fn init(self: &mut Self, data_set: DataSet, run_mode: RunMode, enable_debug_prints: bool) fn init(self: &mut Self, data_set: DataSet, run_mode: RunMode, enable_debug_prints: bool, enable_verbose_prints: bool)
{ {
self.data_set = data_set; self.data_set = data_set;
self.run_mode = run_mode; self.run_mode = run_mode;
self.do_debug_prints = enable_debug_prints; self.do_debug_prints = enable_debug_prints;
self.do_verbose_prints = enable_verbose_prints;
let dir = utils::get_working_dir(); let dir = utils::get_working_dir();
let data_filename = let data_filename =

@ -18,6 +18,8 @@ pub struct Day3
data_set: DataSet, data_set: DataSet,
run_mode: RunMode, run_mode: RunMode,
do_debug_prints: bool, do_debug_prints: bool,
do_verbose_prints: bool,
tokens: Vec<Token>, tokens: Vec<Token>,
mul_ops: Vec<Mul>, mul_ops: Vec<Mul>,
pub final_result: i32, pub final_result: i32,
@ -30,7 +32,15 @@ impl Day3
{ {
pub fn new() -> Day3 pub fn new() -> Day3
{ {
Day3 { data_set: DataSet::Test, run_mode: RunMode::FirstCase, do_debug_prints: false, tokens: vec![], mul_ops: vec![], final_result: 0 } Day3 {
data_set: DataSet::Test,
run_mode: RunMode::FirstCase,
do_debug_prints: false,
do_verbose_prints: false,
tokens: vec![],
mul_ops: vec![],
final_result: 0
}
} }
fn solve_first_case(self: &mut Self) -> String fn solve_first_case(self: &mut Self) -> String
@ -88,11 +98,12 @@ impl Solver for Day3
println!("DAY 3 TEST PRINT"); println!("DAY 3 TEST PRINT");
} }
fn init(self: &mut Self, data_set: DataSet, run_mode: RunMode, enable_debug_prints: bool) fn init(self: &mut Self, data_set: DataSet, run_mode: RunMode, enable_debug_prints: bool, enable_verbose_prints: bool)
{ {
self.data_set = data_set; self.data_set = data_set;
self.run_mode = run_mode; self.run_mode = run_mode;
self.do_debug_prints = enable_debug_prints; self.do_debug_prints = enable_debug_prints;
self.do_verbose_prints = enable_verbose_prints;
let dir = utils::get_working_dir(); let dir = utils::get_working_dir();
let data_filename = let data_filename =

@ -17,6 +17,8 @@ pub struct Day4
data_set: DataSet, data_set: DataSet,
run_mode: RunMode, run_mode: RunMode,
do_debug_prints: bool, do_debug_prints: bool,
do_verbose_prints: bool,
word_grid: Option<WordGrid>, word_grid: Option<WordGrid>,
pub final_result: i32, pub final_result: i32,
} }
@ -28,7 +30,14 @@ impl Day4
{ {
pub fn new() -> Day4 pub fn new() -> Day4
{ {
Day4 { data_set: DataSet::Test, run_mode: RunMode::FirstCase, do_debug_prints: false, word_grid: None, final_result: 0 } Day4 {
data_set: DataSet::Test,
run_mode: RunMode::FirstCase,
do_debug_prints: false,
do_verbose_prints: false,
word_grid: None,
final_result: 0
}
} }
fn solve_first_case(self: &mut Self) -> String fn solve_first_case(self: &mut Self) -> String
@ -62,11 +71,12 @@ impl Solver for Day4
println!("DAY 4 TEST PRINT"); println!("DAY 4 TEST PRINT");
} }
fn init(self: &mut Self, data_set: DataSet, run_mode: RunMode, enable_debug_prints: bool) fn init(self: &mut Self, data_set: DataSet, run_mode: RunMode, enable_debug_prints: bool, enable_verbose_prints: bool)
{ {
self.data_set = data_set; self.data_set = data_set;
self.run_mode = run_mode; self.run_mode = run_mode;
self.do_debug_prints = enable_debug_prints; self.do_debug_prints = enable_debug_prints;
self.do_verbose_prints = enable_verbose_prints;
let dir = utils::get_working_dir(); let dir = utils::get_working_dir();
let data_filename = let data_filename =

@ -16,6 +16,7 @@ pub struct Day5
data_set: DataSet, data_set: DataSet,
run_mode: RunMode, run_mode: RunMode,
do_debug_prints: bool, do_debug_prints: bool,
do_verbose_prints: bool,
pub final_result: i32, pub final_result: i32,
rules: Vec<Rule>, rules: Vec<Rule>,
@ -29,8 +30,15 @@ impl Day5
{ {
pub fn new() -> Day5 pub fn new() -> Day5
{ {
Day5 { data_set: DataSet::Test, run_mode: RunMode::FirstCase, Day5 {
do_debug_prints: false, final_result: 0, rules: vec![], updates: vec![] } data_set: DataSet::Test,
run_mode: RunMode::FirstCase,
do_debug_prints: false,
do_verbose_prints: false,
final_result: 0,
rules: vec![],
updates: vec![]
}
} }
fn solve_first_case(self: &mut Self) -> String fn solve_first_case(self: &mut Self) -> String
@ -112,11 +120,12 @@ impl Solver for Day5
println!("DAY 5 TEST PRINT"); println!("DAY 5 TEST PRINT");
} }
fn init(self: &mut Self, data_set: DataSet, run_mode: RunMode, enable_debug_prints: bool) fn init(self: &mut Self, data_set: DataSet, run_mode: RunMode, enable_debug_prints: bool, enable_verbose_prints: bool)
{ {
self.data_set = data_set; self.data_set = data_set;
self.run_mode = run_mode; self.run_mode = run_mode;
self.do_debug_prints = enable_debug_prints; self.do_debug_prints = enable_debug_prints;
self.do_verbose_prints = enable_verbose_prints;
let dir = utils::get_working_dir(); let dir = utils::get_working_dir();
let data_filename = let data_filename =
@ -298,7 +307,7 @@ impl Rule
return true; return true;
} }
fn make_valid(self: &Rule, update: &mut Vec<i32>, enable_debug_output: bool) fn make_valid(self: &Rule, update: &mut Vec<i32>, _enable_debug_output: bool)
{ {
let mut first_idx = 0; let mut first_idx = 0;
let mut second_idx = 0; let mut second_idx = 0;

@ -127,4 +127,4 @@
..........................#........#.........................................................#......#........................##... ..........................#........#.........................................................#......#........................##...
.................#....#............#...#...........................#....#....#....#...#........................................... .................#....#............#...#...........................#....#....#....#...#...........................................
.............#.......................................................#.........#.................................................. .............#.......................................................#.........#..................................................
....#.................................#...............#.....#....#......##..............#.......................#........#........ ....#.................................#...............#.....#....#......##..............#.......................#........#........

@ -8,6 +8,7 @@
* @brief Advent of Code 2024 day 6 problems * @brief Advent of Code 2024 day 6 problems
******************************************************************************/ ******************************************************************************/
use nalgebra_glm::I32Vec2;
use ::solver_base::solver_base::{Solver, DataSet, RunMode}; use ::solver_base::solver_base::{Solver, DataSet, RunMode};
use utils::utils; use utils::utils;
@ -18,9 +19,12 @@ pub struct Day6
data_set: DataSet, data_set: DataSet,
run_mode: RunMode, run_mode: RunMode,
do_debug_prints: bool, do_debug_prints: bool,
do_verbose_prints: bool,
map: Map, map: Map,
guard_history: Vec<Vec<bool>>, guard_heatmap: Vec<Vec<bool>>,
guard_position_history: Vec<I32Vec2>,
step_iterations: i32,
pub final_result: i32, pub final_result: i32,
} }
@ -31,17 +35,33 @@ impl Day6
{ {
pub fn new() -> Day6 pub fn new() -> Day6
{ {
Day6 { data_set: DataSet::Test, run_mode: RunMode::FirstCase, do_debug_prints: false, Day6 {
map: Map::new(), guard_history: vec![], final_result: 0 } data_set: DataSet::Test,
run_mode: RunMode::FirstCase,
do_debug_prints: false,
do_verbose_prints: false,
map: Map::new(),
guard_heatmap: vec![],
guard_position_history: vec![],
step_iterations: 0,
final_result: 0
}
} }
fn solve_first_case(self: &mut Self) -> String fn solve_first_case(self: &mut Self) -> String
{ {
self.step_iterations = 0;
while self.map.guard_is_on_map() while self.map.guard_is_on_map()
{ {
let pos = I32Vec2::new(self.map.guard_position().x, self.map.guard_position().y);
if !self.guard_position_history.contains(&pos)
{
self.guard_position_history.push(pos);
}
self.guard_history[self.map.guard_position().x as usize][self.map.guard_position().y as usize] = true; self.guard_heatmap[self.map.guard_position().x as usize][self.map.guard_position().y as usize] = true;
self.map.step_guard(); self.map.step_guard();
self.step_iterations += 1;
} }
if self.do_debug_prints if self.do_debug_prints
@ -52,7 +72,7 @@ impl Day6
let mut num_locations = 0; let mut num_locations = 0;
for row in &self.guard_history for row in &self.guard_heatmap
{ {
for b in row for b in row
{ {
@ -66,13 +86,85 @@ impl Day6
self.final_result = num_locations; self.final_result = num_locations;
self.final_result.to_string() self.final_result.to_string()
} }
fn solve_second_case(self: &mut Self) -> String fn solve_second_case(self: &mut Self) -> String
{ {
// Need the normal path the guard will take without modifying the map first so just....
self.solve_first_case();
println!("Step Iterations: {}", self.step_iterations);
// Should only need to check the spots the guard visits normally for potential locations for new blockers
// So the self.guard_history vector should now contain all potential locations for new blockers.
// first attempt: I guess just try brute force with upper-limit for step iterations to guess that it's stuck
// The normal path is 5532 step iterations so maybe 10,000 is enough to determine it is stuck?
let stuck_limit = 10000; // 100,000 to double check -- 10,000 works! 1995 is the correct answer
let mut found_locations: Vec<I32Vec2> = vec![];
if self.do_verbose_prints
{
println!("Positions to test: {}\nTesting...", self.guard_position_history.len());
println!("0%");
}
for (i, pos) in self.guard_position_history.iter().enumerate()
{
if self.do_verbose_prints
{
if i == self.guard_position_history.len() / 4
{
println!("25%");
}
if i == self.guard_position_history.len() / 2
{
println!("50%");
}
let target = self.guard_position_history.len() / 2 + self.guard_position_history.len() / 4;
if i == target
{
println!("75%");
}
}
self.map.reset_guard();
self.map.clear_visited();
let mut iterations = 0;
let mut possibly_stuck = false;
let mut map_clone = self.map.clone();
map_clone.add_blocker_at(&pos);
while map_clone.guard_is_on_map()
{
map_clone.step_guard();
iterations += 1;
if iterations >= stuck_limit
{
possibly_stuck = true;
break;
}
}
if possibly_stuck
{
found_locations.push(*pos);
}
}
if self.do_verbose_prints
{
println!("100%");
}
self.final_result = found_locations.len() as i32;
self.final_result.to_string() self.final_result.to_string()
} }
} }
//||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@ -85,11 +177,12 @@ impl Solver for Day6
println!("DAY 6 TEST PRINT"); println!("DAY 6 TEST PRINT");
} }
fn init(self: &mut Self, data_set: DataSet, run_mode: RunMode, enable_debug_prints: bool) fn init(self: &mut Self, data_set: DataSet, run_mode: RunMode, enable_debug_prints: bool, enable_verbose_prints: bool)
{ {
self.data_set = data_set; self.data_set = data_set;
self.run_mode = run_mode; self.run_mode = run_mode;
self.do_debug_prints = enable_debug_prints; self.do_debug_prints = enable_debug_prints;
self.do_verbose_prints = enable_verbose_prints;
let dir = utils::get_working_dir(); let dir = utils::get_working_dir();
let data_filename = let data_filename =
@ -109,7 +202,7 @@ impl Solver for Day6
self.map.print(); self.map.print();
} }
self.guard_history = vec![vec![false; self.map.width() as usize]; self.map.height() as usize]; self.guard_heatmap = vec![vec![false; self.map.width() as usize]; self.map.height() as usize];
} }
fn solve(self: &mut Self) -> String fn solve(self: &mut Self) -> String

@ -31,6 +31,7 @@ pub enum Direction
pub struct Map pub struct Map
{ {
map: Vec<Vec<MapCell>>, map: Vec<Vec<MapCell>>,
guard_start_pos: I32Vec2,
guard_direction: Direction, guard_direction: Direction,
guard_pos: nalgebra_glm::I32Vec2, guard_pos: nalgebra_glm::I32Vec2,
} }
@ -39,7 +40,7 @@ impl Map
{ {
pub fn new() -> Map pub fn new() -> Map
{ {
Map { map: vec![], guard_direction: Direction::North, guard_pos: I32Vec2::new(0, 0) } Map { map: vec![], guard_start_pos: I32Vec2::new(0, 0), guard_direction: Direction::North, guard_pos: I32Vec2::new(0, 0) }
} }
pub fn parse(data: &str) -> Map pub fn parse(data: &str) -> Map
@ -72,7 +73,7 @@ impl Map
} }
} }
Map { map, guard_direction: Direction::North, guard_pos } Map { map, guard_start_pos: guard_pos, guard_direction: Direction::North, guard_pos }
} }
pub fn print(self: &Map) pub fn print(self: &Map)
@ -125,6 +126,11 @@ impl Map
self.map.len() as i32 self.map.len() as i32
} }
pub fn add_blocker_at(self: &mut Map, at: &I32Vec2)
{
self.map[at.x as usize][at.y as usize] = MapCell::Block;
}
/// Step Rules: /// Step Rules:
/// ///
/// If there is something directly in front of you, turn right 90 degrees. /// If there is something directly in front of you, turn right 90 degrees.
@ -170,8 +176,8 @@ impl Map
{ {
pos.x >= 0 && pos.x >= 0 &&
pos.y >= 0 && pos.y >= 0 &&
(pos.x as usize) < self.map[0].len() && (pos.x as usize) < self.map.len() &&
(pos.y as usize) < self.map.len() (pos.y as usize) < self.map[0].len()
} }
pub fn guard_position(self: &Map) -> I32Vec2 pub fn guard_position(self: &Map) -> I32Vec2
@ -202,4 +208,24 @@ impl Map
}; };
} }
pub fn reset_guard(self: &mut Map)
{
self.guard_pos = self.guard_start_pos;
self.guard_direction = Direction::North;
}
pub fn clear_visited(self: &mut Map)
{
for row in &mut self.map
{
for c in row
{
if *c == MapCell::Visited
{
*c = MapCell::Space;
}
}
}
}
} }

@ -16,6 +16,8 @@ pub struct Day7
data_set: DataSet, data_set: DataSet,
run_mode: RunMode, run_mode: RunMode,
do_debug_prints: bool, do_debug_prints: bool,
do_verbose_prints: bool,
pub final_result: i32, pub final_result: i32,
} }
@ -26,7 +28,12 @@ impl Day7
{ {
pub fn new() -> Day7 pub fn new() -> Day7
{ {
Day7 { data_set: DataSet::Test, run_mode: RunMode::FirstCase, do_debug_prints: false, final_result: 0 } Day7 { data_set: DataSet::Test,
run_mode: RunMode::FirstCase,
do_debug_prints: false,
do_verbose_prints: false,
final_result: 0
}
} }
fn solve_first_case(self: &mut Self) -> String fn solve_first_case(self: &mut Self) -> String
@ -53,11 +60,12 @@ impl Solver for Day7
println!("DAY 7 TEST PRINT"); println!("DAY 7 TEST PRINT");
} }
fn init(self: &mut Self, data_set: DataSet, run_mode: RunMode, enable_debug_prints: bool) fn init(self: &mut Self, data_set: DataSet, run_mode: RunMode, enable_debug_prints: bool, enable_verbose_prints: bool)
{ {
self.data_set = data_set; self.data_set = data_set;
self.run_mode = run_mode; self.run_mode = run_mode;
self.do_debug_prints = enable_debug_prints; self.do_debug_prints = enable_debug_prints;
self.do_verbose_prints = enable_verbose_prints;
let dir = utils::get_working_dir(); let dir = utils::get_working_dir();
let data_filename = let data_filename =

@ -12,7 +12,6 @@ pub enum DataSet
{ {
Test, Test,
TestAlt, TestAlt,
//BALLS,
Full, Full,
} }
@ -25,6 +24,6 @@ pub trait Solver
println!("SOLVER BASE PRINT TEST"); println!("SOLVER BASE PRINT TEST");
} }
fn init(self: &mut Self, data_set: DataSet, run_mode: RunMode, enable_debug_prints: bool); fn init(self: &mut Self, data_set: DataSet, run_mode: RunMode, enable_debug_prints: bool, enable_verbose_prints: bool);
fn solve(self: &mut Self) -> String; fn solve(self: &mut Self) -> String;
} }

@ -19,12 +19,12 @@ fn main()
{ {
// DAY 1 // DAY 1
let mut day_1 = Day1::new(); let mut day_1 = Day1::new();
day_1.init(DataSet::Full, RunMode::FirstCase, false); day_1.init(DataSet::Full, RunMode::FirstCase, false, false);
let day1_result = day_1.solve(); let day1_result = day_1.solve();
println!("Day 1 Part 1 Final Result: {}", day1_result); println!("Day 1 Part 1 Final Result: {}", day1_result);
let mut day_1 = Day1::new(); let mut day_1 = Day1::new();
day_1.init(DataSet::Full, RunMode::SecondCase, false); day_1.init(DataSet::Full, RunMode::SecondCase, false, false);
let day1_result = day_1.solve(); let day1_result = day_1.solve();
println!("Day 1 Part 2 Final Result: {}", day1_result); println!("Day 1 Part 2 Final Result: {}", day1_result);
@ -33,12 +33,12 @@ fn main()
// DAY 2 // DAY 2
let mut day_2 = Day2::new(); let mut day_2 = Day2::new();
day_2.init(DataSet::Full, RunMode::FirstCase, false); day_2.init(DataSet::Full, RunMode::FirstCase, false, false);
let day2_result = day_2.solve(); let day2_result = day_2.solve();
println!("Day 2 Part 1 Final Result: {}", day2_result); println!("Day 2 Part 1 Final Result: {}", day2_result);
let mut day_2 = Day2::new(); let mut day_2 = Day2::new();
day_2.init(DataSet::Full, RunMode::SecondCase, false); day_2.init(DataSet::Full, RunMode::SecondCase, false, false);
let day2_result = day_2.solve(); let day2_result = day_2.solve();
println!("Day 2 Part 2 Final Result: {}", day2_result); println!("Day 2 Part 2 Final Result: {}", day2_result);
@ -46,12 +46,12 @@ fn main()
// DAY 3 // DAY 3
let mut day_3 = Day3::new(); let mut day_3 = Day3::new();
day_3.init(DataSet::Full, RunMode::FirstCase, false); day_3.init(DataSet::Full, RunMode::FirstCase, false, false);
let day3_result = day_3.solve(); let day3_result = day_3.solve();
println!("Day 3 Part 1 Final Result: {}", day3_result); println!("Day 3 Part 1 Final Result: {}", day3_result);
let mut day_3 = Day3::new(); let mut day_3 = Day3::new();
day_3.init(DataSet::Full, RunMode::SecondCase, false); day_3.init(DataSet::Full, RunMode::SecondCase, false, false);
let day3_result = day_3.solve(); let day3_result = day_3.solve();
println!("Day 3 Part 2 Final Result: {}", day3_result); println!("Day 3 Part 2 Final Result: {}", day3_result);
@ -59,12 +59,12 @@ fn main()
// DAY 4 // DAY 4
let mut day_4 = Day4::new(); let mut day_4 = Day4::new();
day_4.init(DataSet::Full, RunMode::FirstCase, false); day_4.init(DataSet::Full, RunMode::FirstCase, false, false);
let day4_result = day_4.solve(); let day4_result = day_4.solve();
println!("Day 4 Part 1 Final Result: {}", day4_result); println!("Day 4 Part 1 Final Result: {}", day4_result);
let mut day_4 = Day4::new(); let mut day_4 = Day4::new();
day_4.init(DataSet::Full, RunMode::SecondCase, false); day_4.init(DataSet::Full, RunMode::SecondCase, false, false);
let day4_result = day_4.solve(); let day4_result = day_4.solve();
println!("Day 4 Part 2 Final Result: {}", day4_result); println!("Day 4 Part 2 Final Result: {}", day4_result);
@ -72,12 +72,12 @@ fn main()
// DAY 5 // DAY 5
let mut day_5 = Day5::new(); let mut day_5 = Day5::new();
day_5.init(DataSet::Full, RunMode::FirstCase, false); day_5.init(DataSet::Full, RunMode::FirstCase, false, false);
let day5_result = day_5.solve(); let day5_result = day_5.solve();
println!("Day 5 Part 1 Final Result: {}", day5_result); println!("Day 5 Part 1 Final Result: {}", day5_result);
let mut day_5 = Day5::new(); let mut day_5 = Day5::new();
day_5.init(DataSet::Full, RunMode::SecondCase, false); day_5.init(DataSet::Full, RunMode::SecondCase, false, false);
let day5_result = day_5.solve(); let day5_result = day_5.solve();
println!("Day 5 Part 2 Final Result: {}", day5_result); println!("Day 5 Part 2 Final Result: {}", day5_result);
@ -85,14 +85,14 @@ fn main()
// DAY 6 // DAY 6
let mut day_6 = Day6::new(); let mut day_6 = Day6::new();
day_6.init(DataSet::Full, RunMode::FirstCase, false); day_6.init(DataSet::Full, RunMode::FirstCase, false, false);
let day6_result = day_6.solve(); let day6_result = day_6.solve();
println!("Day 6 Part 1 Final Result: {}", day6_result); println!("Day 6 Part 1 Final Result: {}", day6_result);
// let mut day_6 = Day6::new(); let mut day_6 = Day6::new();
// day_6.init(DataSet::Full, RunMode::SecondCase, false); day_6.init(DataSet::Full, RunMode::SecondCase, false, true);
// let day6_result = day_6.solve(); let day6_result = day_6.solve();
// println!("Day 6 Part 2 Final Result: {}", day6_result); println!("Day 6 Part 2 Final Result: {}", day6_result);
println!("-------------------------"); println!("-------------------------");

Loading…
Cancel
Save