diff --git a/crates/day_1/src/day_1.rs b/crates/day_1/src/day_1.rs index f2446cf..24f2471 100644 --- a/crates/day_1/src/day_1.rs +++ b/crates/day_1/src/day_1.rs @@ -10,6 +10,8 @@ use solver::solver::{Solver, SolverOption, SolverState}; use utils::utils; +const DIAL_MAX_POS: i32 = 99; + pub struct Day1 { solver_state: SolverState, @@ -24,7 +26,14 @@ impl Solver for Day1 fn init(&mut self, config: solver::solver::SolverState) -> Result<(), String> { self.solver_state = config; - self.input = utils::read_text_file("input/day_1_test_input"); + if self.solver_state.check_option(SolverOption::Debug) + { + self.input = utils::read_text_file("input/day_1_test_input"); + } + else + { + self.input = utils::read_text_file("input/day_1_input"); + } self.parse_rots(); return Ok(()) } @@ -33,9 +42,18 @@ impl Solver for Day1 { let verbose = self.solver_state.check_option(SolverOption::Verbose); println!("Starting Dial Pos: {}", self.dial_position); + println!("Number of rotations: {}", self.rotations.len()); for rot in &self.rotations { self.dial_position += rot; + if self.dial_position < 0 + { + self.dial_position = DIAL_MAX_POS + self.dial_position + 1; + } + else if self.dial_position > DIAL_MAX_POS + { + self.dial_position -= DIAL_MAX_POS + 1; + } if verbose { @@ -51,7 +69,7 @@ impl Solver for Day1 } } } - Ok(0) + Ok(self.zeros) } fn name(&self) -> String @@ -81,7 +99,12 @@ impl Day1 // NOTE: Trusting there are no errors in the input file! let trimmed = &line[1..]; - let mag: i32 = trimmed.parse().expect(&format!("Failed to parse rotation value: {}", trimmed)); + let mut mag: i32 = trimmed.parse().expect(&format!("Failed to parse rotation value: {}", trimmed)); + // mag = mag % DIAL_MAX_POS; + if mag > DIAL_MAX_POS + { + mag %= DIAL_MAX_POS + 1 + } let rot = mag * coef; self.rotations.push(rot); // println!("as: {}", rot); @@ -91,6 +114,8 @@ impl Day1 // fn process_rot(&mut self, ) } + +#[allow(dead_code)] fn print_rot(r: i32) { let mut rot = r; diff --git a/input/day_1_input b/input/day_1_input new file mode 100644 index 0000000..47f7fd2 --- /dev/null +++ b/input/day_1_input @@ -0,0 +1,4532 @@ +R30 +L18 +R46 +R15 +L15 +L4 +R2 +R47 +R4 +L34 +L47 +R38 +R6 +L42 +L29 +R7 +L16 +L46 +R34 +L40 +R50 +L49 +R18 +L14 +R25 +L4 +R8 +R39 +L34 +L11 +R42 +R31 +L19 +L20 +R26 +R40 +R1 +R39 +L48 +L43 +R29 +L29 +L9 +L50 +R39 +R23 +R30 +L15 +L30 +L4 +L27 +R76 +R2 +L97 +R85 +L55 +L83 +R69 +R81 +R28 +L28 +L24 +L48 +L28 +R2 +L2 +R65 +R35 +R10 +L10 +R23 +R63 +L54 +L32 +L39 +R84 +R86 +R69 +L94 +R94 +R9 +R49 +L74 +L84 +R12 +L99 +L13 +L1 +L35 +L13 +L37 +L14 +R31 +R45 +L76 +L38 +R40 +L33 +L25 +R77 +R79 +L38 +R38 +R90 +R10 +L41 +L53 +R27 +R27 +L60 +L5 +R50 +R77 +R10 +L32 +L80 +L75 +R98 +L11 +L87 +L24 +R81 +R73 +R25 +L25 +R10 +R37 +L22 +L84 +R284 +L76 +R976 +R54 +L54 +R29 +R42 +R229 +R32 +L72 +R81 +R767 +R492 +R74 +L22 +R48 +L95 +R12 +L74 +R57 +L67 +R167 +L23 +R41 +R7 +R75 +L85 +R85 +R68 +L69 +L3 +L42 +R214 +L11 +R69 +L68 +R32 +L572 +L93 +R65 +L19 +L726 +L45 +L21 +R21 +R496 +L96 +L21 +R14 +L51 +R641 +R17 +R15 +L732 +L10 +R27 +R41 +R59 +L63 +R940 +L27 +L50 +R73 +R61 +L6 +R14 +R58 +R82 +R91 +L46 +L65 +R38 +L21 +L79 +L74 +L33 +L45 +L379 +R31 +R97 +R60 +R543 +L49 +R242 +R746 +R49 +L31 +R2 +L306 +R94 +R27 +R975 +R36 +L85 +R93 +L4 +L480 +R61 +R30 +L98 +L74 +L11 +L17 +R78 +R55 +R367 +L91 +L54 +L95 +L60 +R41 +L14 +R73 +L44 +L9 +R844 +R2 +R82 +L75 +R44 +R56 +R97 +R3 +L40 +L95 +R935 +L57 +L1 +R43 +L85 +L15 +L48 +L837 +R55 +L78 +R402 +R424 +L98 +R95 +L38 +R38 +L90 +R490 +R54 +L9 +R81 +L2 +L924 +R78 +L32 +L46 +L5 +L395 +R53 +L53 +L22 +R22 +R74 +L74 +L16 +L63 +R37 +L58 +R566 +R34 +L707 +L93 +R30 +L887 +R4 +L526 +L21 +R79 +L53 +L526 +R9 +L9 +R89 +R468 +R43 +L22 +L78 +R62 +L62 +L149 +L51 +R45 +R55 +L4 +L90 +R93 +R59 +L39 +R84 +L3 +L371 +R44 +L1 +L72 +L12 +L2 +L86 +R46 +L346 +R40 +R22 +L33 +R38 +L5 +R84 +L70 +R20 +R4 +R987 +R98 +L88 +R3 +R65 +R52 +L67 +R7 +L80 +R23 +L46 +R64 +R82 +L82 +R31 +L95 +R62 +L80 +R164 +L91 +L81 +R72 +R33 +L33 +L99 +R93 +L94 +R584 +R16 +L31 +R77 +R48 +R6 +R80 +R697 +R23 +L62 +R65 +L75 +R41 +R58 +L27 +R38 +L438 +L41 +L515 +R746 +L90 +L14 +L205 +R19 +L2 +R41 +R61 +L87 +L13 +R1 +R23 +R196 +L50 +R76 +R929 +R25 +R945 +R28 +L76 +R70 +R47 +L62 +L55 +R40 +L251 +R50 +R982 +L18 +R9 +R2 +L79 +R733 +R59 +L24 +L49 +R57 +L48 +L28 +L31 +R99 +R65 +L65 +L1 +R115 +L87 +L97 +L239 +L733 +R81 +L39 +L76 +L37 +L87 +R42 +R58 +R76 +R42 +R12 +L18 +L6 +L6 +R890 +L46 +L4 +L72 +R84 +L552 +R22 +R78 +L66 +R66 +R12 +L43 +R31 +R29 +R78 +L168 +L39 +R556 +L56 +R44 +L44 +R99 +R96 +R49 +R61 +L469 +L36 +L57 +L12 +L831 +R365 +L78 +R927 +L60 +L12 +R75 +L82 +R28 +R37 +L21 +R68 +R653 +R868 +L34 +L16 +L64 +R9 +R37 +R434 +L31 +R811 +R86 +L56 +L865 +R46 +R54 +R543 +L145 +R23 +L30 +L99 +R29 +R38 +R62 +L540 +L60 +L84 +L969 +R90 +R227 +R50 +R72 +L488 +L82 +L16 +L86 +L65 +R51 +R87 +R13 +R626 +R94 +L5 +R45 +R446 +R76 +R88 +L70 +L92 +R92 +L22 +R22 +R536 +L22 +L9 +L730 +L69 +R35 +L34 +R37 +R88 +R89 +R79 +R56 +L888 +L68 +L53 +R53 +R620 +L15 +R95 +L794 +R94 +L10 +R76 +R87 +L69 +R16 +R737 +R98 +L5 +L30 +L20 +L2 +L953 +L29 +L988 +R16 +L87 +L81 +L156 +L51 +R478 +R65 +L792 +R33 +L33 +R99 +R7 +R14 +L20 +L11 +R11 +L37 +R387 +L7 +R15 +L58 +L6 +L294 +R29 +L29 +R10 +R38 +L52 +L7 +L89 +R596 +L79 +R88 +L78 +R473 +L63 +L37 +R3 +L703 +R55 +R146 +R435 +L36 +L91 +L215 +R35 +R41 +R69 +L31 +R42 +R50 +L32 +R2 +L70 +R69 +R55 +R67 +R6 +L97 +L16 +R17 +R40 +L496 +L661 +L75 +L9 +L358 +R776 +R54 +R28 +L80 +L20 +R446 +L446 +R223 +L73 +L83 +R75 +R108 +R89 +L50 +L889 +L720 +R69 +R41 +L90 +R125 +L25 +R63 +L26 +R12 +R51 +R68 +R55 +R7 +L30 +L16 +L84 +R92 +R78 +R16 +L62 +R76 +L961 +L75 +L69 +L95 +L983 +L17 +L92 +L63 +L54 +R9 +R45 +R39 +L84 +R97 +L203 +R19 +L109 +R48 +R77 +R38 +L67 +L16 +L78 +L6 +R65 +R10 +R961 +R28 +R36 +R93 +R291 +L84 +L38 +R38 +R31 +R877 +R18 +R46 +R28 +L44 +L3 +L53 +R30 +L22 +R92 +L70 +R96 +R18 +R90 +L834 +R47 +L47 +L68 +L35 +L97 +R69 +L69 +R422 +R408 +R70 +R24 +L24 +L11 +L98 +L18 +R27 +L20 +R20 +R96 +L96 +L505 +L13 +R680 +L62 +L18 +R60 +R658 +L73 +R73 +R16 +L16 +L548 +R988 +L40 +R83 +L620 +L674 +L889 +L99 +L1 +L97 +R43 +R980 +L151 +L75 +L3 +L972 +R21 +L81 +L946 +L20 +L99 +L6 +R6 +R28 +L34 +R6 +R87 +R2 +R729 +L59 +L43 +R33 +L78 +R969 +L67 +R70 +L40 +R97 +L76 +L54 +R22 +R75 +R33 +L80 +R1 +R89 +L46 +L63 +L1 +R54 +R46 +R976 +R93 +L17 +L52 +R20 +R88 +L8 +R94 +L94 +L79 +L921 +R33 +R939 +L672 +R29 +L29 +R75 +R925 +R77 +R6 +R64 +L447 +L411 +L89 +L64 +L736 +L28 +R28 +R65 +L65 +R430 +L853 +L77 +L785 +L475 +R1 +R2 +L92 +R5 +R825 +L34 +L47 +L59 +L43 +L93 +L82 +L924 +R32 +L31 +L89 +R636 +R53 +R4 +L19 +L82 +R17 +R22 +L442 +L92 +R92 +L55 +L58 +R13 +R61 +R91 +R914 +L36 +R94 +L21 +R77 +R28 +L794 +R2 +R934 +R640 +L377 +L64 +L98 +L97 +R46 +L367 +L33 +L67 +R67 +L12 +R55 +R57 +R58 +L58 +L714 +L11 +L75 +R64 +R28 +R16 +L62 +R54 +L44 +L156 +L579 +L21 +L45 +L99 +L50 +L39 +R11 +R61 +L39 +R24 +R32 +L37 +R3 +R78 +L86 +L414 +L98 +L2 +L14 +L73 +R79 +R12 +R903 +R893 +R72 +L8 +R59 +R77 +R89 +L94 +R9 +R96 +R760 +L160 +R13 +R87 +R45 +L45 +R376 +L76 +R6 +L61 +R71 +R684 +L76 +R919 +R50 +R70 +R87 +L50 +L69 +L79 +R5 +R38 +L54 +L41 +R627 +L27 +R33 +R72 +L305 +R627 +L27 +L94 +L6 +L466 +L73 +L53 +L60 +L526 +R78 +L12 +L88 +R59 +L317 +R58 +L38 +R55 +L917 +L94 +R94 +R68 +R101 +L69 +R17 +L749 +L82 +R84 +R66 +R64 +L74 +R47 +R51 +R91 +R98 +L713 +L71 +R17 +R54 +R96 +R74 +R48 +L27 +L291 +L56 +L44 +R132 +L18 +L49 +R35 +L82 +L24 +R55 +L39 +R90 +L35 +L81 +L773 +L18 +R63 +L56 +R71 +R39 +L57 +L14 +L39 +L81 +L254 +L5 +R40 +R27 +L3 +L9 +L15 +L21 +L18 +R39 +L71 +L81 +L304 +R637 +L46 +R65 +R1 +L672 +R71 +L89 +L79 +R64 +R4 +L40 +L60 +R6 +R28 +L34 +L64 +L36 +L92 +R92 +L19 +R634 +L215 +R70 +L70 +L21 +R46 +L36 +L89 +L9 +L26 +L11 +R91 +L6 +R61 +R5 +R53 +L6 +R91 +R4 +L72 +R68 +L43 +R83 +R31 +L19 +L76 +R94 +L15 +R239 +L237 +R60 +L24 +R937 +R24 +L97 +R64 +R12 +L29 +L47 +R37 +L37 +R49 +R46 +L23 +L85 +L187 +L698 +L602 +L97 +L93 +R90 +L72 +L28 +R18 +R82 +R12 +L83 +L40 +L136 +L53 +R51 +R51 +L94 +R90 +R90 +L772 +L716 +L15 +R78 +R52 +L15 +R24 +R12 +R84 +R98 +R82 +L227 +R93 +L166 +L52 +R52 +R69 +L8 +R26 +L87 +L70 +R70 +L11 +R934 +R98 +L10 +R43 +L31 +L315 +L7 +L8 +R20 +R87 +R84 +L41 +L43 +L832 +R846 +L14 +R6 +R338 +L72 +R28 +R44 +L644 +L10 +L51 +R890 +L13 +L54 +R767 +L67 +L817 +R90 +L4 +R69 +L73 +R21 +R52 +R59 +R94 +R35 +L88 +L53 +R553 +L67 +L51 +R18 +L93 +R88 +R83 +R6 +L48 +R64 +R5 +L59 +L2 +R56 +L921 +R927 +L6 +L53 +R53 +R796 +L96 +R61 +R39 +R52 +R24 +R2 +R22 +R84 +R93 +L12 +L43 +R678 +L4 +R78 +L267 +R29 +L36 +L28 +L672 +L52 +R293 +L67 +R26 +L76 +R76 +L81 +L98 +L21 +L554 +L6 +R60 +L14 +L86 +R361 +R29 +R47 +L37 +R37 +L37 +L75 +R98 +R77 +L286 +R86 +R15 +R35 +R10 +R40 +L66 +R66 +R46 +L30 +R527 +L48 +L78 +R19 +R86 +R53 +R86 +R39 +R60 +R40 +R64 +R92 +L774 +L23 +L31 +R57 +L15 +L35 +R50 +L85 +L80 +L36 +R16 +R56 +R80 +L36 +L740 +R97 +R85 +R29 +R3 +R326 +R64 +R36 +R53 +L18 +L83 +R71 +R39 +L62 +L81 +L92 +L27 +R4 +R83 +L187 +L39 +R84 +L292 +L53 +L22 +L78 +L51 +L49 +L809 +L391 +L471 +R11 +L40 +L609 +R46 +L837 +L1 +L99 +L827 +L59 +R86 +R98 +R10 +L768 +R55 +R96 +L91 +L34 +R634 +L857 +L43 +R28 +L28 +R89 +L28 +R87 +R52 +L85 +R58 +L73 +R3 +R97 +L356 +R93 +L81 +R29 +L85 +L54 +L846 +R39 +L119 +L41 +R721 +R5 +R456 +L61 +R93 +R207 +R6 +L19 +L62 +R9 +L78 +L95 +L66 +L95 +L39 +L91 +L570 +R24 +R76 +L42 +L78 +R18 +L62 +L36 +R54 +L54 +R7 +R94 +R5 +R66 +R817 +R30 +R58 +L81 +R204 +L40 +L60 +L49 +R49 +R327 +L68 +L59 +R54 +R98 +R32 +R75 +R714 +R98 +L37 +L34 +R48 +R52 +L619 +R9 +R10 +L489 +L97 +L14 +R682 +R18 +R74 +L87 +L45 +R14 +R46 +L2 +R95 +R545 +R60 +L45 +L96 +R41 +L95 +R58 +R37 +R56 +L50 +L95 +R889 +R80 +R20 +R43 +L24 +R25 +R84 +R872 +L77 +R77 +R357 +L7 +L89 +L66 +R66 +L61 +L18 +L33 +R40 +R11 +R40 +L41 +L81 +R82 +L452 +R453 +R99 +L56 +R17 +R339 +L50 +R97 +R14 +R699 +L488 +L72 +R40 +L82 +R24 +R18 +R14 +R86 +L29 +L3 +R32 +R86 +L78 +R358 +L2 +R36 +L3 +R705 +R98 +R38 +L77 +L720 +R59 +L43 +R95 +L67 +R15 +R47 +L83 +L36 +R109 +R63 +L7 +R25 +R52 +R30 +R577 +L294 +L83 +R7 +L59 +L46 +R52 +R86 +L99 +L18 +R12 +L242 +R7 +L52 +L14 +R66 +L12 +R75 +R75 +R61 +L86 +L13 +L40 +L502 +L34 +L24 +R42 +L1 +R59 +R60 +R48 +L1 +R931 +L238 +L32 +R54 +L846 +L76 +R924 +R4 +R237 +L65 +L14 +R14 +L931 +R50 +L19 +L92 +L1 +L7 +R9 +L9 +R91 +R148 +R61 +L60 +L40 +L71 +R71 +R51 +R82 +R712 +L97 +R22 +R30 +L68 +L3 +R99 +L10 +R448 +L66 +R382 +L82 +R664 +R36 +R41 +R663 +R68 +L32 +R60 +R42 +L460 +R24 +L92 +R25 +R661 +L83 +L443 +R26 +L34 +R81 +L47 +R526 +L26 +R69 +R9 +L53 +L733 +R708 +R67 +L48 +L88 +L12 +R881 +R7 +L58 +R351 +R7 +L52 +L55 +L27 +L89 +R32 +L14 +L28 +R26 +R7 +R93 +L17 +R82 +L65 +R887 +L61 +R86 +R49 +R97 +L58 +L66 +R66 +R47 +R993 +L240 +L70 +R70 +L44 +R13 +L971 +R73 +L32 +R59 +L73 +R75 +L94 +L70 +R6 +L72 +R27 +R95 +R8 +L41 +R21 +R34 +R223 +R18 +L51 +R27 +R95 +R74 +L10 +L90 +R658 +R27 +R215 +L3 +R3 +L65 +L80 +R38 +L46 +L16 +L91 +R260 +R63 +R28 +L99 +L92 +R28 +L96 +L332 +L82 +L61 +R628 +R966 +R33 +L88 +L519 +L77 +L63 +L399 +R62 +L93 +R793 +R63 +L47 +L5 +R635 +R71 +L80 +L78 +L98 +R45 +L6 +L80 +L20 +L31 +R848 +L61 +R27 +R44 +R94 +L621 +L36 +L45 +L40 +L79 +L91 +R49 +R63 +L59 +R84 +L17 +L55 +R67 +L52 +R11 +R66 +R90 +L75 +L81 +R21 +L78 +L45 +R74 +R28 +L16 +R416 +L89 +L25 +L86 +R6 +R94 +R662 +R38 +L40 +L42 +R61 +L79 +R36 +R59 +R5 +L873 +L40 +L68 +R5 +R548 +L793 +L79 +R24 +R876 +R59 +L230 +L52 +L396 +R19 +L68 +L632 +L63 +L37 +L92 +L8 +L993 +L41 +L79 +L524 +R28 +R9 +R138 +L883 +L98 +R94 +L71 +R20 +L41 +R41 +L363 +R63 +L31 +L69 +R3 +L8 +R36 +L917 +L56 +R42 +L978 +R30 +R71 +R736 +L59 +R67 +R33 +L142 +R242 +L36 +R236 +R23 +R44 +R72 +R91 +L20 +L61 +R65 +R90 +L4 +L38 +L62 +R75 +R21 +L979 +L58 +L99 +R92 +L11 +R57 +R38 +R337 +R7 +L74 +L6 +R96 +R12 +L8 +L27 +L11 +R2 +L64 +L61 +L39 +R24 +L2 +R875 +L35 +R47 +L9 +R90 +L53 +R11 +R86 +R66 +L8 +R8 +L48 +L167 +L85 +L833 +R2 +L28 +R220 +L36 +L97 +R72 +R44 +R9 +L53 +L395 +L26 +L45 +L84 +R2 +R48 +L34 +R32 +R24 +L8 +R13 +R73 +R491 +R9 +R39 +L42 +L616 +L81 +R44 +L78 +L35 +L31 +R576 +L26 +R30 +R31 +R6 +R983 +R35 +R465 +R99 +R67 +L9 +L57 +R26 +L17 +L76 +L86 +L480 +R42 +L44 +L65 +R292 +R8 +L35 +L13 +R10 +R5 +L11 +R32 +L88 +R34 +R33 +R794 +L92 +L69 +R25 +L25 +L42 +R59 +L4 +R87 +L802 +R840 +R13 +R49 +L57 +L8 +R35 +L53 +R83 +R60 +R40 +R43 +L43 +L60 +L40 +R399 +R82 +R664 +R47 +R8 +L18 +R18 +L838 +L62 +R95 +R13 +L76 +L33 +L21 +R422 +R59 +R6 +R91 +R44 +L32 +R32 +R56 +R44 +R22 +R84 +L62 +L44 +L20 +R20 +R86 +L86 +R67 +L67 +L61 +R24 +L63 +L77 +R85 +R95 +L16 +R13 +R68 +L268 +R42 +L382 +R92 +L52 +R32 +L78 +R73 +R82 +L180 +L529 +L521 +R18 +L63 +R866 +R24 +L24 +R4 +R396 +L70 +R10 +L38 +R99 +L701 +L45 +R381 +R461 +L72 +L85 +R92 +L832 +R66 +L166 +R83 +R519 +L53 +R583 +R51 +R17 +R777 +L37 +L86 +L754 +L98 +L73 +L93 +L30 +R794 +R63 +R37 +L631 +L69 +L32 +L68 +L73 +L61 +R64 +L91 +L39 +R689 +L24 +L65 +R7 +R39 +L25 +R903 +R76 +R86 +R87 +R3 +L65 +L11 +L77 +R71 +R47 +L55 +L69 +L82 +R8 +R57 +L46 +L57 +L48 +L49 +L38 +L531 +R72 +L99 +L69 +R772 +L566 +R59 +R88 +L83 +R95 +L32 +L82 +L89 +L30 +R33 +R14 +L57 +R43 +R93 +R386 +R21 +L14 +R14 +R79 +L56 +L96 +R76 +L42 +L91 +L64 +R90 +L96 +L837 +R68 +R13 +L94 +R50 +L13 +L38 +L5 +L44 +L63 +L82 +R479 +L10 +R76 +R16 +L16 +L73 +R37 +R907 +R28 +L99 +R227 +L6 +R79 +R89 +R51 +R266 +L52 +R59 +L13 +L40 +L660 +R34 +L34 +L9 +R91 +R518 +L16 +R681 +L65 +R48 +R52 +L74 +L26 +R9 +R91 +R559 +R61 +R40 +R96 +R25 +L963 +L23 +R5 +R84 +R553 +R73 +L10 +L89 +R55 +L66 +L162 +L708 +R70 +L24 +R21 +L88 +R93 +R73 +R25 +R58 +L49 +R41 +R72 +L91 +R30 +L64 +R3 +L54 +R54 +R74 +R26 +L49 +L59 +L4 +R12 +R29 +R71 +L901 +R1 +R2 +L43 +L86 +R20 +L95 +R302 +L58 +R93 +R278 +R1 +R39 +L804 +R2 +R49 +L93 +L523 +L84 +L42 +R290 +L72 +L76 +L559 +R59 +R9 +R91 +L48 +L33 +R938 +L25 +R556 +R12 +R4 +R96 +R42 +R922 +R36 +L47 +R21 +L79 +L46 +L43 +R37 +L453 +R10 +L73 +L42 +R15 +L93 +R93 +R65 +R61 +L28 +L98 +R53 +L90 +R37 +R76 +L1 +R60 +R65 +L69 +R40 +R924 +R5 +L73 +L78 +L57 +L31 +R61 +L75 +R53 +L86 +R986 +L41 +R41 +R406 +L6 +L508 +L92 +R59 +R41 +R20 +L20 +R771 +R65 +L55 +L35 +L886 +L58 +R98 +R77 +R10 +L586 +R99 +R90 +R110 +L80 +R80 +L32 +R25 +R95 +L83 +R17 +R78 +L297 +R97 +L959 +L74 +L67 +R535 +L27 +R93 +L6 +R56 +L51 +R58 +L28 +R170 +L58 +L3 +R2 +L41 +R34 +R777 +R331 +R58 +L519 +L339 +R12 +R93 +L39 +L69 +R20 +R17 +L76 +L96 +L60 +R556 +R82 +R18 +L90 +L10 +L76 +L8 +R84 +L36 +R53 +R785 +L2 +R30 +L30 +R18 +L17 +L32 +R13 +R18 +R96 +L88 +R92 +R892 +L30 +R238 +R21 +R579 +R52 +L552 +L879 +R79 +L46 +L93 +L14 +L55 +L5 +R72 +L327 +L81 +R70 +L490 +L83 +R8 +L99 +L651 +L30 +L10 +L66 +R50 +L15 +L14 +L321 +R82 +L82 +R42 +L42 +L91 +R749 +L49 +R191 +L92 +L82 +R82 +R903 +L165 +R54 +R63 +R37 +L20 +L80 +R54 +L54 +R898 +L466 +L61 +L5 +L94 +R28 +R3 +R97 +L34 +L907 +R34 +L93 +L58 +R7 +R42 +R78 +L85 +L11 +L21 +R553 +L66 +L39 +R98 +R2 +R286 +R14 +R856 +R21 +R81 +L60 +L99 +L11 +R12 +R26 +R83 +L92 +R83 +L45 +R28 +R975 +R63 +R958 +R21 +R4 +L2 +L33 +R31 +L157 +L143 +L8 +L92 +L27 +L7 +L66 +R40 +R40 +L380 +L63 +R35 +L72 +R37 +L681 +R44 +L36 +L26 +L90 +R206 +R77 +R14 +R10 +R45 +L76 +L24 +L691 +R67 +R24 +L250 +R79 +L71 +L99 +L59 +L46 +L29 +R76 +L931 +L70 +L94 +R30 +L60 +L13 +L430 +L98 +L53 +L68 +R73 +R13 +R789 +R94 +R17 +R870 +L70 +R75 +L75 +L30 +L44 +R74 +R6 +L9 +L98 +L99 +L94 +L6 +L409 +L91 +R26 +L82 +R356 +L18 +L1 +L13 +R486 +R43 +R83 +R57 +L16 +R55 +L37 +R61 +R80 +R10 +R43 +L63 +R46 +R84 +R2 +R98 +R71 +R214 +L7 +L96 +R86 +L68 +L97 +R958 +R77 +R62 +R1 +R520 +R24 +R75 +R880 +L54 +R70 +L16 +L59 +L70 +R99 +R30 +R48 +L43 +R679 +R22 +R14 +L20 +L804 +L96 +L587 +R987 +R65 +L365 +L84 +R48 +L55 +L965 +L1 +L43 +R2 +R98 +R13 +R11 +R87 +L475 +R47 +R97 +L97 +R17 +R42 +L25 +R1 +R627 +R88 +L77 +L21 +R47 +L40 +L16 +R890 +L25 +R71 +R65 +R20 +L347 +R99 +R64 +R37 +L69 +L55 +R24 +R99 +R53 +R79 +R69 +L60 +R89 +R71 +R53 +L56 +L97 +L69 +L48 +L3 +R34 +R25 +R541 +R20 +R73 +R27 +R75 +R25 +L681 +L19 +R244 +L94 +R80 +R72 +R7 +L72 +R70 +L29 +L20 +R556 +L370 +R322 +R34 +L37 +L763 +R73 +L71 +L719 +L83 +R30 +L80 +L150 +R85 +L379 +R94 +L36 +R71 +R65 +R17 +L517 +R98 +L91 +L7 +L81 +L19 +R343 +L43 +R23 +L20 +L3 +R56 +L1 +L91 +L964 +L66 +L91 +R857 +L17 +R17 +L49 +L51 +L13 +R13 +L78 +R878 +L38 +L56 +R11 +L884 +L323 +R90 +L63 +R63 +L37 +L63 +R83 +L3 +L43 +L769 +L68 +R27 +R83 +R90 +R221 +R94 +L14 +L1 +R82 +L8 +L86 +R51 +R861 +R1 +L8 +R77 +L70 +L45 +L655 +L21 +R69 +R61 +R91 +R65 +R95 +R40 +R616 +R84 +L93 +L57 +L28 +L22 +L24 +L47 +L29 +R42 +R98 +L90 +R48 +L29 +R31 +R30 +R70 +R20 +L718 +R37 +L439 +R23 +R6 +L129 +R52 +L95 +R12 +R31 +L579 +L6 +R893 +R45 +R647 +L192 +L8 +R439 +L39 +R49 +R612 +L61 +L54 +R54 +L233 +L67 +L4 +R59 +L17 +L173 +R39 +L3 +L25 +L37 +R561 +R73 +R13 +R52 +R180 +L18 +R38 +R62 +R36 +R13 +R551 +L23 +L177 +R42 +L42 +L60 +L41 +R1 +L99 +L1 +R749 +R51 +R73 +R24 +R41 +L57 +R26 +L791 +L259 +L82 +R4 +R3 +R97 +R21 +R27 +L75 +L52 +R45 +R55 +L558 +R54 +R83 +R21 +R56 +R14 +L70 +L91 +R51 +L96 +R58 +R77 +L31 +L433 +R11 +L91 +R45 +L32 +R32 +L13 +L87 +R50 +R850 +L11 +R11 +R35 +L35 +R89 +R11 +R7 +L89 +R35 +L53 +R65 +L65 +L65 +R728 +L755 +R707 +L736 +L17 +L62 +L34 +L66 +L9 +R54 +R55 +L79 +L21 +R96 +L23 +R627 +R395 +L326 +R85 +R77 +L639 +L92 +R53 +L47 +L6 +L45 +R45 +L15 +R57 +L19 +R438 +R769 +R970 +R85 +L78 +R86 +R7 +R94 +L877 +R83 +R48 +L82 +L66 +R79 +L79 +R901 +L57 +L84 +L68 +L18 +R41 +L715 +L2 +R2 +R20 +L63 +R402 +L95 +L164 +R60 +R40 +L13 +L24 +R61 +R77 +L76 +L63 +L6 +R63 +R30 +L349 +L4 +L88 +L25 +L83 +R99 +L30 +R31 +L15 +L85 +R475 +L575 +R74 +R12 +L886 +R46 +R74 +L980 +L40 +R56 +R104 +R40 +L38 +R37 +L79 +R680 +L333 +L76 +R9 +R94 +R166 +L55 +L24 +L267 +R386 +L289 +R659 +R30 +L81 +L19 +L44 +L56 +R53 +R2 +R50 +L5 +R728 +L31 +L91 +R20 +L74 +L1 +L651 +L2 +L6 +L17 +L175 +L88 +R50 +L401 +L4 +R237 +L67 +L939 +L55 +L42 +R952 +R33 +L312 +L64 +L53 +L28 +L19 +R4 +R96 +L30 +R37 +L282 +L2 +R38 +L35 +R567 +R89 +R925 +L61 +L746 +L69 +L31 +R17 +L53 +R89 +R22 +L75 +L920 +R73 +L37 +L16 +L776 +L824 +R259 +L295 +L64 +R40 +R13 +L24 +L29 +L87 +R33 +R54 +R6 +R794 +R72 +R909 +R1 +L1 +R861 +R58 +R33 +L42 +R7 +R20 +L52 +L54 +L721 +R42 +R167 +R88 +R82 +R62 +R152 +R647 +R70 +L601 +L183 +L73 +R671 +R463 +L52 +L26 +L46 +R849 +L61 +L20 +R78 +L15 +R15 +L90 +L21 +R11 +L602 +L355 +R57 +L690 +L110 +R857 +L771 +R13 +L422 +R81 +R53 +L82 +R5 +R85 +R81 +R163 +R57 +R69 +L34 +L55 +R92 +L77 +R28 +L49 +R6 +R630 +L50 +L34 +R20 +L42 +L21 +R97 +L59 +L81 +R206 +L49 +L17 +L81 +L19 +L21 +R48 +L27 +R931 +R69 +R870 +R30 +L11 +R11 +R95 +R74 +R222 +R9 +R89 +L31 +L658 +L36 +R22 +L393 +L96 +L97 +R32 +L366 +L12 +R36 +L90 +L367 +L65 +L268 +R29 +R22 +L885 +R72 +L657 +R29 +L10 +L71 +L87 +L42 +R236 +L36 +R47 +R43 +L390 +L11 +L349 +R460 +R32 +L32 +L18 +L96 +L186 +L21 +R21 +L94 +L6 +L17 +L83 +R296 +R3 +R73 +L26 +L47 +L99 +L75 +L663 +R52 +R569 +L85 +L47 +R75 +L15 +L89 +L22 +R66 +L31 +L90 +L45 +L645 +L155 +L27 +L73 +L41 +R80 +L939 +L127 +L73 +L71 +R24 +L724 +R71 +R62 +R438 +L34 +L39 +R51 +L175 +R125 +L19 +L209 +R40 +L40 +R951 +L671 +R72 +R54 +L13 +R707 +L460 +R60 +L631 +L85 +R70 +L397 +R42 +L999 +R25 +R480 +R495 +L231 +L85 +R19 +L3 +R627 +L404 +R60 +L20 +R91 +L3 +L19 +R68 +L41 +L2 +R843 +R99 +R401 +R470 +L264 +R12 +R65 +R517 +R383 +L83 +L56 +L44 +R36 +L9 +L127 +R74 +R388 +R738 +R344 +R37 +L32 +R851 +R83 +L83 +L652 +R866 +R86 +L75 +R87 +R24 +R8 +R21 +L20 +R41 +L986 +R76 +L25 +R58 +L62 +R16 +L80 +L39 +L97 +R53 +R131 +R61 +R8 +L99 +R54 +R45 +L51 +L849 +L615 +R17 +L33 +L369 +R65 +L496 +L276 +R7 +L71 +R44 +R76 +L56 +L835 +R86 +R56 +R28 +R972 +L261 +L15 +L53 +L71 +R732 +L529 +L27 +L703 +R327 +L79 +L58 +L85 +L78 +R53 +L53 +R653 +L26 +R11 +L43 +L38 +L81 +R578 +L54 +R25 +R75 +L92 +R792 +R60 +R57 +R80 +R93 +R883 +L73 +L19 +L81 +L58 +R26 +R32 +R88 +R1 +R36 +L25 +R266 +R86 +R48 +L34 +L966 +R75 +R25 +L73 +R28 +L55 +R58 +L33 +R75 +L84 +L12 +R96 +R53 +R2 +R45 +L57 +R1 +R46 +R3 +L93 +L46 +L632 +L689 +R60 +L7 +L13 +L57 +L6 +L432 +L847 +R219 +L750 +R378 +L96 +L82 +R54 +L59 +R85 +L14 +L23 +L43 +R668 +L64 +L4 +L90 +L10 +L51 +L49 +R71 +L43 +R572 +R48 +R16 +L564 +L97 +L98 +R23 +R43 +L671 +R42 +L42 +R63 +L83 +L76 +R96 +L40 +R12 +L272 +L98 +R98 +L57 +L89 +R1 +R46 +L19 +L62 +R80 +R60 +L37 +L75 +R71 +R74 +L56 +R719 +R13 +L32 +L780 +R62 +L19 +R9 +R20 +L474 +R345 +R92 +L80 +R72 +L29 +R845 +R592 +R4 +L61 +L5 +L30 +R12 +R8 +L741 +L79 +R37 +R717 +L64 +L7 +L24 +L12 +L40 +L707 +R76 +L802 +R48 +R730 +L752 +R82 +L875 +R16 +L59 +R45 +L909 +R474 +L37 +R96 +L28 +L31 +R26 +L344 +L356 +L1 +L486 +L181 +R8 +L9 +L436 +L78 +L1 +R462 +L717 +R33 +L594 +R807 +R30 +L38 +L87 +R99 +L11 +L46 +L54 +R355 +R78 +R67 +R25 +L9 +R226 +R74 +L60 +L56 +R44 +L62 +L32 +L56 +R16 +L10 +L64 +L197 +L51 +R2 +L90 +R92 +R18 +L29 +R19 +R62 +R55 +L17 +R735 +R65 +R20 +R60 +R20 +R787 +L87 +L2 +R4 +R53 +L15 +R860 +L9 +L291 +R38 +R446 +R208 +R8 +L20 +R15 +R1 +L896 +R64 +L60 +L93 +R6 +R83 +L87 +L113 +L29 +L71 +R29 +L3 +L54 +R70 +L42 +L39 +L61 +R83 +R5 +R733 +R36 +L81 +R24 +L9 +R650 +R81 +L699 +L70 +L77 +L40 +L36 +L425 +R366 +L88 +L53 +R26 +L26 +R46 +L20 +R72 +R8 +L6 +R98 +L965 +L32 +R721 +L22 +L62 +R89 +L34 +R47 +R60 +R14 +R73 +R50 +R128 +L123 +L22 +R429 +R51 +R81 +L99 +R18 +L47 +L21 +L32 +L2 +R2 +R51 +L25 +L933 +L93 +R58 +L72 +R86 +L29 +R50 +R7 +L3 +R3 +L34 +R779 +R21 +R44 +L329 +R19 +R58 +L61 +R3 +L509 +L51 +L11 +R394 +L936 +L887 +R71 +R81 +L652 +R79 +R216 +L92 +R97 +R66 +L44 +L422 +L55 +L45 +L89 +R97 +L49 +R41 +L535 +R35 +L25 +L75 +R318 +L72 +R54 +R815 +L283 +L21 +R54 +R66 +R759 +R877 +R364 +R52 +R17 +L308 +R8 +L68 +R25 +R28 +R15 +L61 +L3 +L312 +R96 +R69 +L14 +L84 +R838 +L29 +L86 +R919 +R67 +R443 +L681 +L212 +R50 +L97 +L82 +L48 +L73 +R217 +R30 +L785 +R71 +R36 +R66 +L58 +L420 +R543 +L8 +L920 +L72 +R32 +R88 +R80 +L513 +R5 +R97 +L66 +R831 +L99 +L73 +L10 +L18 +L54 +R560 +L160 +L79 +L95 +L56 +L33 +L99 +L38 +R78 +L78 +R983 +R17 +R93 +R86 +L62 +L663 +L896 +L58 +L88 +L4 +R9 +L14 +R97 +R69 +L11 +L58 +L2 +R790 +R12 +R808 +R30 +L28 +R849 +R52 +L244 +R33 +L484 +R3 +R34 +L270 +L83 +R1 +R78 +R321 +R98 +L220 +L43 +L35 +R40 +R47 +L56 +R59 +L56 +L34 +L94 +R72 +R89 +L67 +R1 +L5 +L96 +L4 +L82 +L22 +L244 +R80 +R5 +R67 +R6 +L59 +R53 +L25 +L12 +R55 +L18 +L6 +R36 +L81 +R51 +L422 +R72 +L83 +L967 +L55 +R55 +L24 +L919 +L357 +L295 +L83 +R78 +L39 +L69 +R8 +R385 +R1 +R22 +L1 +R93 +L30 +L70 +L50 +L50 +L22 +R42 +L96 +R68 +L11 +L26 +R84 +R329 +R787 +L55 +R40 +R65 +R92 +L70 +L85 +L89 +L17 +R20 +L47 +L9 +L96 +R96 +R18 +R82 +L3 +R17 +L414 +R73 +R77 +R75 +L89 +R61 +R92 +L58 +L69 +R66 +L8 +L820 +L810 +R24 +R2 +R14 +R35 +R63 +R150 +L61 +L839 +L67 +R35 +L273 +L530 +R57 +R226 +L3 +R233 +R344 +L96 +L204 +L20 +R20 +L78 +L29 +L258 +L766 +L61 +R90 +L98 +R944 +L69 +L25 +L99 +R771 +L258 +R36 +R16 +L77 +R173 +L12 +R47 +L405 +R35 +R23 +L57 +L39 +R96 +L61 +L55 +L364 +R80 +L84 +R51 +R33 +R787 +L87 +L44 +R97 +R336 +R589 +L278 +L98 +R98 +R76 +L76 +L5 +R481 +L87 +L571 +L18 +R68 +L68 +R856 +L62 +L17 +R6 +L90 +L29 +L368 +L20 +L39 +L28 +L9 +R49 +L49 +R59 +L74 +L17 +L12 +L81 +L36 +R97 +L70 +L77 +L37 +R58 +R690 +R12 +L12 +R90 +L90 +L33 +R7 +L42 +L32 +L29 +R43 +L14 +L56 +R56 +L93 +L647 +R40 +L86 +L717 +L82 +L6 +L25 +R54 +L4 +R22 +L56 +L779 +L235 +L69 +R76 +R3 +L318 +R22 +L57 +R3 +L64 +R90 +R44 +L235 +R244 +L25 +R92 +R72 +L98 +L66 +R730 +L30 +R58 +L31 +R97 +L24 +L9 +L366 +R75 +R1 +L901 +R91 +R90 +R90 +L88 +L83 +R69 +R99 +L968 +R993 +L68 +R75 +R79 +R7 +R14 +L61 +R38 +L77 +R50 +L74 +L54 +R223 +L45 +R6 +R215 +R96 +R83 +R32 +L132 +L537 +R37 +R51 +R49 +R91 +L91 +R39 +L22 +R383 +L8 +L92 +R56 +R44 +R33 +R49 +L82 +L88 +R76 +L60 +R87 +L15 +R172 +R371 +R1 +L44 +L43 +L41 +L74 +R1 +L79 +R435 +L12 +L87 +R28 +R78 +R294 +L11 +L285 +R37 +R19 +R68 +R72 +L59 +R59 +R91 +R203 +L94 +R1 +R35 +R64 +L47 +R47 +L75 +L717 +R92 +L27 +L45 +R72 +L22 +R22 +L25 +R76 +R45 +L283 +R87 +R509 +L9 +L966 +L22 +R988 +L72 +L28 +L64 +L36 +L69 +L814 +R83 +L86 +R28 +R51 +R58 +R79 +R70 +R547 +R52 +R1 +R78 +R92 +L26 +R56 +L936 +R536 +R75 +R525 +R13 +R96 +R637 +R64 +L52 +L29 +L43 +R14 +R62 +L95 +L97 +R30 +R85 +L85 +L577 +R77 +R243 +R141 +L91 +L93 +L33 +L89 +R22 +L76 +R321 +R6 +L805 +R97 +L43 +R94 +L87 +L46 +R539 +R27 +L51 +L74 +R998 +R514 +L14 +R45 +R21 +R34 +L8 +L292 +R3 +L630 +L860 +R80 +L2 +L41 +L50 +L20 +R57 +R64 +L58 +R57 +R88 +R63 +R76 +L27 +R260 +R2 +R18 +R75 +L55 +L4 +R384 +R20 +L97 +L402 +R10 +L772 +L70 +L967 +L682 +L20 +R87 +R13 +L27 +R53 +L256 +R15 +L85 +R77 +R23 +R48 +L48 +R88 +R712 +L3 +L97 +R94 +L95 +L50 +L49 +L222 +L56 +R45 +L367 +L56 +R23 +L567 +L74 +L65 +L58 +R45 +R62 +R190 +R42 +L42 +R99 +R326 +R95 +R80 +R38 +R42 +R55 +R49 +R16 +L986 +L65 +L49 +L92 +L708 +L18 +R12 +R93 +L74 +L62 +R221 +R28 +L19 +R19 +R89 +R11 +L919 +R19 +R68 +R12 +R380 +L160 +L54 +L95 +R241 +R48 +L2 +R633 +R87 +L25 +R501 +R69 +L845 +R78 +R86 +R44 +L66 +R65 +R82 +L61 +L86 +R12 +L44 +R9 +R435 +L137 +L815 +L60 +R76 +R575 +R181 +R868 +R56 +L56 +R70 +L70 +L7 +R507 +L34 +R34 +R567 +L833 +R67 +R99 +R811 +R7 +R72 +L64 +R942 +L68 +R75 +R966 +L41 +R60 +L370 +L14 +L15 +R39 +L78 +L66 +L24 +R3 +L710 +L90 +R72 +L96 +L311 +R4 +L42 +R38 +R634 +L34 +R12 +L12 +L75 +R75 +L85 +L426 +R11 +L281 +R81 +R61 +R58 +R39 +R42 +R46 +R54 +L32 +R32 +R41 +L41 +R53 +L53 +L88 +L12 +R43 +L28 +R85 +R65 +R35 +R69 +L69 +L48 +L50 +L802 +R97 +L402 +R89 +R74 +L18 +R60 +R98 +L83 +R98 +R87 +R38 +L38 +L35 +L85 +R13 +R7 +R52 +R48 +L11 +R11 +L44 +L6 +R91 +R59 +R60 +L23 +R91 +R83 +R5 +R95 +R13 +R96 +L47 +L73 +L60 +L85 +L42 +R30 +L10 +L9 +L24 +L56 +R63 +R32 +L39 +L4 +R69 +L82 +R86 +L69 +R67 +L67 +L31 +R51 +L64 +R40 +L53 +R42 +R15 +R17 +R13 +R48 +L32 +R16 +L62 +R79 +L30 +L19 +L27 +R9 +R20 +R13 +L26 +L11 +L18 +L34 +R9 +L36 +R39 +R8 +L47 +R9 +L26 +R2 +R26 +R3 +L39 +L36 +L41 +R34 +L11 +L44 +R10 +R32 +R32 +R46 +L39 +L36 +L36 +L30 +R28 +L39 +L38 +R22 +L5 +R31 +L35 +R40 +R46 +R1 +L3 +R38 +L46 +L39 +L7 +R19 \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 12d5296..f4096d0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -15,10 +15,11 @@ fn main() // TODO: Parse args into a vec of SolverStates, one for each day // TODO: Replace these function calls with some code to run days based on the -r argument - run_test_day(); + // run_test_day(); run_day_1(); } +#[allow(dead_code)] fn run_test_day() { let mut state = SolverState::new(); @@ -39,7 +40,10 @@ fn run_test_day() fn run_day_1() { - let state = SolverState::new(); + println!("Running Day 1..."); + let state = SolverState::new(); + // state.set_option(SolverOption::Debug); + // state.set_option(SolverOption::Verbose); let mut day1 = Day1::new(); day1.init(state).expect(&format!("Day {} failed to init", day1.name())); @@ -57,6 +61,7 @@ fn run_day_1() /// and `-g debug` which is: global option: "debug". Global options will be added to each day that is run. /// Specify which days to run with: `-r 1 2 5 9` which will run days 1, 2, 5, and 9. /// `-r all` will run all days. +#[allow(dead_code)] fn parse_args() { // TODO: implement parse_args()