✨ Finit le jour 11
This commit is contained in:
		
							
								
								
									
										54
									
								
								day_11/part_1.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								day_11/part_1.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | ||||
| <?php | ||||
|  | ||||
| $grid = array_map('str_split', explode("\n", file_get_contents('./input.txt'))); | ||||
|  | ||||
| $flashes = 0; | ||||
|  | ||||
| for ($i = 0; $i < 100; $i++) { | ||||
|     foreach ($grid as $k => $row) { | ||||
|         foreach ($row as $j => $cell) { | ||||
|             $grid[$k][$j]++; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     while(has_more_than_nine($grid)) { | ||||
|         foreach ($grid as $k => $row) { | ||||
|             foreach ($row as $j => $cell) { | ||||
|                 if ($grid[$k][$j] > 9) { | ||||
|                     foreach (range(-1, 1) as $r) { | ||||
|                         foreach (range(-1, 1) as $c) { | ||||
|                             if ($r === 0 && $c === 0) { | ||||
|                                 $grid[$k+$r][$j+$c] = 0; | ||||
|                             } | ||||
|                             if ( | ||||
|                                 array_key_exists($k+$r, $grid) && | ||||
|                                 array_key_exists($j+$c, $grid[$k+$r]) && | ||||
|                                 $grid[$k+$r][$j+$c] !== 0 | ||||
|                             ) { | ||||
|                                 $grid[$k+$r][$j+$c]++; | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|                     $flashes++; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     echo sprintf('After step %u%s%s%s', $i + 1, "\n", implode("\n", array_map('implode', $grid)), "\n", "\n"); | ||||
| } | ||||
|  | ||||
| echo $flashes; | ||||
|  | ||||
| function has_more_than_nine($grid) | ||||
| { | ||||
|     foreach ($grid as $row) { | ||||
|         foreach ($row as $cell) { | ||||
|             if ($cell > 9) { | ||||
|                 return true; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     return false; | ||||
| } | ||||
							
								
								
									
										68
									
								
								day_11/part_2.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								day_11/part_2.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,68 @@ | ||||
| <?php | ||||
|  | ||||
| $grid = array_map('str_split', explode("\n", file_get_contents('./input.txt'))); | ||||
|  | ||||
| $steps = 0; | ||||
|  | ||||
| while (!are_synchronized($grid)) { | ||||
|     foreach ($grid as $k => $row) { | ||||
|         foreach ($row as $j => $cell) { | ||||
|             $grid[$k][$j]++; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     while(has_more_than_nine($grid)) { | ||||
|         foreach ($grid as $k => $row) { | ||||
|             foreach ($row as $j => $cell) { | ||||
|                 if ($grid[$k][$j] > 9) { | ||||
|                     foreach (range(-1, 1) as $r) { | ||||
|                         foreach (range(-1, 1) as $c) { | ||||
|                             if ($r === 0 && $c === 0) { | ||||
|                                 $grid[$k+$r][$j+$c] = 0; | ||||
|                             } | ||||
|                             if ( | ||||
|                                 array_key_exists($k+$r, $grid) && | ||||
|                                 array_key_exists($j+$c, $grid[$k+$r]) && | ||||
|                                 $grid[$k+$r][$j+$c] !== 0 | ||||
|                             ) { | ||||
|                                 $grid[$k+$r][$j+$c]++; | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     $steps++; | ||||
|  | ||||
|     echo sprintf('After step %u%s%s%s%s', $steps, "\n", implode("\n", array_map('implode', $grid)), "\n", "\n"); | ||||
| } | ||||
|  | ||||
| echo $steps; | ||||
|  | ||||
| function has_more_than_nine($grid) | ||||
| { | ||||
|     foreach ($grid as $row) { | ||||
|         foreach ($row as $cell) { | ||||
|             if ($cell > 9) { | ||||
|                 return true; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     return false; | ||||
| } | ||||
|  | ||||
| function are_synchronized($grid) | ||||
| { | ||||
|     foreach ($grid as $row) { | ||||
|         foreach ($row as $cell) { | ||||
|             if ($cell !== 0) { | ||||
|                 return false; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     return true; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user