More fast
This commit is contained in:
		
							parent
							
								
									6a39bf7002
								
							
						
					
					
						commit
						40b79950bd
					
				| @ -138,7 +138,7 @@ impl DirButton { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| #[derive(Debug, Clone, Copy, PartialEq, Eq)] | ||||
| #[derive(Debug, PartialEq, Eq)] | ||||
| enum NumButton { | ||||
|     One, | ||||
|     Two, | ||||
| @ -191,10 +191,10 @@ impl NumButton { | ||||
|         if start.0 == 0 && end.1 == 3 { | ||||
|             let mut x = [None, None, None, None, None, None]; | ||||
|             (0..dx).for_each(|i| { | ||||
|                 x[i] = Some(bx.clone()); | ||||
|                 x[i] = Some(bx); | ||||
|             }); | ||||
|             (0..dy).for_each(|i| { | ||||
|                 x[i + dx] = Some(by.clone()); | ||||
|                 x[i + dx] = Some(by); | ||||
|             }); | ||||
|             x[dx + dy] = Some(DirButton::A); | ||||
|             [ | ||||
| @ -207,10 +207,10 @@ impl NumButton { | ||||
|         } else if end.0 == 0 && start.1 == 3 { | ||||
|             let mut y = [None, None, None, None, None, None]; | ||||
|             (0..dx).for_each(|i| { | ||||
|                 y[i + dy] = Some(bx.clone()); | ||||
|                 y[i + dy] = Some(bx); | ||||
|             }); | ||||
|             (0..dy).for_each(|i| { | ||||
|                 y[i] = Some(by.clone()); | ||||
|                 y[i] = Some(by); | ||||
|             }); | ||||
|             y[dx + dy] = Some(DirButton::A); | ||||
|             [ | ||||
| @ -224,12 +224,12 @@ impl NumButton { | ||||
|             let mut x = [None, None, None, None, None, None]; | ||||
|             let mut y = [None, None, None, None, None, None]; | ||||
|             (0..dx).for_each(|i| { | ||||
|                 x[i] = Some(bx.clone()); | ||||
|                 y[i + dy] = Some(bx.clone()); | ||||
|                 x[i] = Some(bx); | ||||
|                 y[i + dy] = Some(bx); | ||||
|             }); | ||||
|             (0..dy).for_each(|i| { | ||||
|                 x[i + dx] = Some(by.clone()); | ||||
|                 y[i] = Some(by.clone()); | ||||
|                 x[i + dx] = Some(by); | ||||
|                 y[i] = Some(by); | ||||
|             }); | ||||
|             x[dx + dy] = Some(DirButton::A); | ||||
|             y[dx + dy] = Some(DirButton::A); | ||||
| @ -316,9 +316,9 @@ fn precompute_steps(steps: &mut [DistanceMatrix]) { | ||||
| 
 | ||||
| fn shortest_dir_path(path: Path, steps: &mut [DistanceMatrix]) -> usize { | ||||
|     path.path | ||||
|         .into_iter() | ||||
|         .iter() | ||||
|         .flatten() | ||||
|         .fold((0, DirButton::A), |acc, next| { | ||||
|         .fold((0, &DirButton::A), |acc, next| { | ||||
|             let sum = acc.0; | ||||
|             let pos = acc.1; | ||||
| 
 | ||||
| @ -329,14 +329,14 @@ fn shortest_dir_path(path: Path, steps: &mut [DistanceMatrix]) -> usize { | ||||
|         .0 | ||||
| } | ||||
| 
 | ||||
| fn shortest_path(path: Vec<NumButton>, steps: &mut [DistanceMatrix]) -> usize { | ||||
|     path.into_iter() | ||||
|         .fold((0, NumButton::A), |acc, end| { | ||||
| fn shortest_path(path: &[NumButton], steps: &mut [DistanceMatrix]) -> usize { | ||||
|     path.iter() | ||||
|         .fold((0, &NumButton::A), |acc, end| { | ||||
|             let sum = acc.0; | ||||
|             let start = acc.1; | ||||
| 
 | ||||
|             let extension = start | ||||
|                 .to(&end) | ||||
|                 .to(end) | ||||
|                 .into_iter() | ||||
|                 .flatten() | ||||
|                 .map(|path| shortest_dir_path(path, steps)) | ||||
| @ -355,7 +355,6 @@ fn part1(input: &Input) -> usize { | ||||
| 
 | ||||
|     input | ||||
|         .iter() | ||||
|         .cloned() | ||||
|         .map(|(num, path)| num * shortest_path(path, &mut steps)) | ||||
|         .sum() | ||||
| } | ||||
| @ -368,7 +367,6 @@ fn part2(input: &Input) -> usize { | ||||
| 
 | ||||
|     input | ||||
|         .iter() | ||||
|         .cloned() | ||||
|         .map(|(num, path)| num * shortest_path(path, &mut steps)) | ||||
|         .sum() | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jan-Bulthuis
						Jan-Bulthuis