<?php // je récupère la map de base $map = array_map('str_split', explode("\n", file_get_contents('input.txt'))); $height = count($map); $length = count($map[0]); // je la multiplie pour qu'elle soit complète $multiply_by = ceil($height / $length) * 8; array_walk($map, static function(&$row) use ($multiply_by) { $row = str_split(str_repeat(implode('', $row), $multiply_by)); }); $height = count($map); $length = count($map[0]); // je la visite et compte les arbres $tests = [ ['Right' => 1, 'down' => 1], ['Right' => 3, 'down' => 1], ['Right' => 5, 'down' => 1], ['Right' => 7, 'down' => 1], ['Right' => 1, 'down' => 2], ]; $result = 1; foreach ($tests as $i => $test) { $right = 0; $down = 0; $count_trees = 0; while ($right < $length && $down < $height) { if ($map[$down][$right] === '#') { $count_trees++; } $right += $test['Right']; $down += $test['down']; } // echo sprintf('Trouvé %u arbres sur le parcours %u', $count_trees, $i); $result *= $count_trees; } echo $result;