$fold[1]) { $point[0] = $fold[1] * 2 - $point[0]; } if ($fold[0] == 'y' && $point[1] > $fold[1]) { $point[1] = $fold[1] * 2 - $point[1]; } } $coordinates = points_unique($coordinates); } printImage($coordinates); // PGHRKLKL function points_unique($coordinates) { $tmp = []; $newCoordinates = []; foreach ($coordinates as $point) { if (!isset($tmp[implode(',', $point)])) { $newCoordinates[] = $point; $tmp[implode(',', $point)] = 1; } } return $newCoordinates; } function printImage($coordinates) { $maxx = $maxy = 0; foreach ($coordinates as $point) { if ($point[0] > $maxx) { $maxx = $point[0]; } if ($point[1] > $maxy) { $maxy = $point[1]; } } $image = array_fill(0, $maxy + 1, array_fill(0, $maxx + 1, ' ')); foreach ($coordinates as $point) { $image[$point[1]][$point[0]] = '#'; } echo implode("\n", array_map(fn($line) => implode('', $line), $image)); }