Я пытаюсь напечатать следующую последовательность с php.
Вот мой код до сих пор:
$last = 1;
for ($j = 1; $j < 5; $j++){for ($i = 0; $i < 14 ; ++$i){
if($i %4 == 0){
echo "************";
}
if ($i + $last > 14){
$last= -$i + 1 ;
}
echo $i+$last." , ";
}echo "</br>";
$last=$i + $last -2;
if ($last > 14) {
$last = 1;
}}
Приведенный выше код производит что-то следующим образом, что не совсем то, что я хотел.
Это, кажется, делает работу:
$len = 14;
foreach(range(0, 6) as $day) {
$start = ($day * 4 + 1) % $len;
$rng = array_slice(
array_merge(range($start, $len), range(1, $start)),
0,
$len);
$cols = [$day + 1];
foreach(array_chunk($rng, 4) as $c)
$cols []= implode(',', $c);
echo implode(' | ', $cols), "\n";
}
Результат:
1 | 1,2,3,4 | 5,6,7,8 | 9,10,11,12 | 13,14
2 | 5,6,7,8 | 9,10,11,12 | 13,14,1,2 | 3,4
3 | 9,10,11,12 | 13,14,1,2 | 3,4,5,6 | 7,8
4 | 13,14,1,2 | 3,4,5,6 | 7,8,9,10 | 11,12
5 | 3,4,5,6 | 7,8,9,10 | 11,12,13,14 | 1,2
6 | 7,8,9,10 | 11,12,13,14 | 1,2,3,4 | 5,6
7 | 11,12,13,14 | 1,2,3,4 | 5,6,7,8 | 9,10
Других решений пока нет …