diff --git a/src/day14/main.rs b/src/day14/main.rs index b36d8be..6f22d81 100644 --- a/src/day14/main.rs +++ b/src/day14/main.rs @@ -60,7 +60,7 @@ impl NanoFactory { .collect(); } self.ordered.reverse(); - self.ordered.retain(|res| res != "ORE"); + self.ordered.pop(); } /// calculate how much ores are required for required_fuel @@ -84,7 +84,6 @@ impl NanoFactory { }); // return cost for ore - println!("{:?}", storage); *storage.get("ORE").unwrap() as usize } @@ -278,8 +277,7 @@ mod tests { .trim() .as_bytes(), ); - let mut factory = NanoFactory::from(bufreader); - factory.resolve_order(); + let factory = NanoFactory::from(bufreader); assert_eq!(factory.generate_fuel(), 31); assert_eq!(factory.resource_usage(1), 31); } @@ -299,8 +297,7 @@ mod tests { .trim() .as_bytes(), ); - let mut factory = NanoFactory::from(bufreader); - factory.resolve_order(); + let factory = NanoFactory::from(bufreader); assert_eq!(factory.generate_fuel(), 165); assert_eq!(factory.resource_usage(1), 165); } @@ -324,6 +321,7 @@ mod tests { ); let factory = NanoFactory::from(bufreader); assert_eq!(factory.generate_fuel(), 13312); + assert_eq!(factory.generate_fuel_from_ores(1_000_000_000_000), 82892753); } #[test] @@ -346,10 +344,10 @@ mod tests { .trim() .as_bytes(), ); - let mut factory = NanoFactory::from(bufreader); - factory.resolve_order(); + let factory = NanoFactory::from(bufreader); assert_eq!(factory.generate_fuel(), 180697); assert_eq!(factory.resource_usage(1), 180697); + // TODO assert_eq!(factory.generate_fuel_from_ores(1_000_000_000_000), 5586022); } #[test] @@ -377,9 +375,9 @@ mod tests { .trim() .as_bytes(), ); - let mut factory = NanoFactory::from(bufreader); - factory.resolve_order(); + let factory = NanoFactory::from(bufreader); assert_eq!(factory.generate_fuel(), 2210736); assert_eq!(factory.resource_usage(1), 2210736); + // TODO assert_eq!(factory.generate_fuel_from_ores(1_000_000_000_000), 460664); } } diff --git a/src/intcode.rs b/src/intcode.rs index 1236bf0..b1b96e8 100644 --- a/src/intcode.rs +++ b/src/intcode.rs @@ -319,8 +319,9 @@ impl Computer { Mode::Immediate => want, Mode::Relative => (self.rel + self.get_pos(want)) as usize, }; - if length <= want { - self.program.resize(want + 1, 0); + if length < want { + let missing = (want - length) + 10000; + self.program.extend_from_slice(&vec![0; missing]) } self.program[want] = value; }