@ak_wi

Как реализовать на PHP: позиции двух соседних номеров показываются программой через пять показов других номеров?

Т.е. есть последовательность 1,2,3,4,5,6,7,8,9,10,11,12 и т.д. неограниченной длины
Ее нужно вывести в виде: 1, 3, 5, 7, 9, 11, 2, 4, 6, 8, 10, 12
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 3
mahmudchon
@mahmudchon
В вашем примере идет через 6.
$str_0 = '';
$str_1 = '';
$str_2 = '';
$y = 0;
for($x = 1; $x <= 30; $x++) {
    if($x % 2 !== 0) {
        $str_1 .= $x . ',';
    } else {
        $str_2 .= $x . ',';
    }
    $y++;
    if($y == 10) {
        $str_0 .= $str_1 . $str_2;
        $str_1 = '';
        $str_2 = '';
        $y = 0;
    }
    
}
echo substr($str_0, 0, strlen($str_0) - 1);
//1,3,5,7,9,2,4,6,8,10,11,13,15,17,19,12,14,16,18,20,21,23,25,27,29,22,24,26,28,30
Ответ написан
tsarevfs
@tsarevfs
C++ developer
Это невозможно в том виде как вы описали.
пусть "1" стоит на первом месте. Это значит что "2" стоит через 5 позиций на 1+6=7 месте. Позиция для "3" получается тоже определена -- 7+6=13. Аналогично можно получить позицию всех остальных чисел.
Но тогда у нас не остается чисел чтобы заполнить "дырки".
Ответ написан
Комментировать
@tatarrr95
$array = [1,2,3,4,5,6,7,8,9,10,11,12];
$a = array_fill(0, count($array)/2, '');
$answer = array_fill(0, count($array), '');
$j=0;
for($i=0; $i<count($array); $i+=2){
    $a[$j] = [$array[$i], $array[$i+1]];
    $j++;
}
for($i=0; $i<count($a); $i++){
    $answer[$i] = $a[$i][0];
    $answer[$i+6] = $a[$i][1];
}
print implode(", ", $answer);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы