前回もそうだったが、処理は、できたけど、その処理を与えられた回数分繰り返す必要があった。
ただ、ループ後に、変数名が異なって、最初の処理に戻るときに、処理したい配列が、初期化されていた。
やりたいこと
1連の処理を終えた後、その配列に再度、同じ1連の処理をしたい。
解決策
最後の処理で作られる配列の変数名を、最初の処理で使う配列の変数名と、同じにする。
list($n, $m, $k) = explode(' ', trim(fgets(STDIN))); // 型;string $N = (int) $n; $M = (int) $m; $K = (int) $k; $cardsArr = []; // $N 枚の数字の配列を作る for($i = 0; $i < $N; $i++) { $cardsArr[] = $i + 1; } // ※このループにおいて、array_chunk()の 引数で扱う配列名:$cardsArr と、 // 最後の array_merge() で作られる配列名を $cardsArr にすること。 for ($i = 0; $i < $K; $i++) { $newArr = array_chunk($cardsArr, $M); $reverseArr = array_reverse($newArr); $cardsArr = array_merge(...$reverseArr); } foreach ($cardsArr as $val) { echo $val . PHP_EOL; }
感想
こう考えると、大して難しいロジックは、書いていないな〜...