<?php include 'functions.php'; $rows = explode("\n", file_get_contents('input.txt')); // Make the list of asteroids coordinates $asteroids = array_flatten( array_filter( array_map(static function($row, $i) { return array_filter(array_map(static function($col, $j) use ($i) { if ($col === '#') { return sprintf('%s,%s', $i, $j); } return null; }, str_split($row), range(0, strlen($row)))); }, $rows, range(0, count($rows))) ) ); $asteroid_count = []; foreach ($asteroids as $asteroid_base) { $count = 0; foreach ($asteroids as $asteroid_target) { if ($asteroid_base === $asteroid_target) { continue; } $points_base = explode(',', $asteroid_base); $points_target = explode(',', $asteroid_target); $points = getPointsBetween($points_base[0], $points_base[1], $points_target[0], $points_target[1]); $add_point = true; foreach ($points as $point) { if ($point === $asteroid_base || $point === $asteroid_target) { continue; } if (in_array($point, $asteroids)) { $add_point = false; break; } } if ($add_point) { $count++; } } $asteroid_count[$asteroid_base] = $count; } arsort($asteroid_count); var_dump($asteroid_count); echo current($asteroid_count);