Цикл for

Статус
В этой теме нельзя размещать новые ответы.

AmdY

Пью пиво
Команда форума
каждая команда должна сыграть друг с другом
уже их постановки задачи ясно что самое логическое решение - это два цикла, чтобы получилось каждый с каждым.
PHP:
foreach($teams as $home) {
    foreach(team as $away) {
        // здесь логика, не забывая что команда не играет сама с собой
    }
}
 

WMix

герр M:)ller
Партнер клуба
USA
напиши правило как определяется таблица игр...
 

WMix

герр M:)ller
Партнер клуба
AmdY
1 тур

Игрок4 — Игрок2

Игрок1 — Игрок5

Игрок3 — Игрок6

почему Игрок4 не играет ни с 1 ни с 3м?
 

WMix

герр M:)ller
Партнер клуба
ХакИрФсимагущий
на production написанно только
PHP:
$x = 10000001;
остальное дебаг...
можно попросить тебя для оптимизации выбрать другой топик?
 

USA

Новичок
AmdY
1 тур

Игрок4 — Игрок2

Игрок1 — Игрок5

Игрок3 — Игрок6

почему Игрок4 не играет ни с 1 ни с 3м?
это я просто для того, что бы понять сколько туров должно быть,генерировал с помощью Таблица и расписание
круговых турниров http://chess.sainfo.ru/table.php.
для того, что бы отловить ошибку 1-1,2-2... нужно использовать if() continue ?
PHP:
  foreach($arr as $home) {
    foreach($arr as $away) {
       echo "<pre>";
        echo "$home.-.$away\n"; 
    }
}
 

WMix

герр M:)ller
Партнер клуба
туров будет на 1 маньше чем игроков при четном колличестве и столько же сколько игроков при нечетном
 

ХакИрФсимагущий

[засикречино]
PHP:
$w=6;//работает только с четными числами.
$q=$w/2;
    for($i=1; $i<=$w; ++$i) {
        $p[]='Игрок'.$i;
    }
    for($i=0; $i<=$w-1; ++$i) {
        echo $p[abs($q-$i)],' против ', $p[$i],'\n';
    }
Попробуйте както вот так.
 

ХакИрФсимагущий

[засикречино]
PHP:
$w=6;//работает только с четными числами.
function z($q,$i,$w){
    if($i<=$w-1&&$q!=$i){
    return true;}
}
    for($i=1; $i<=$w; ++$i) {
        $p[]='Игрок'.$i;
    }
     for($q=0; $q<=$w-1; ++$q) {
    for($i=0; z($q,$i,$w); ++$i) {       
        echo $p[$q],' против ', $p[$i],"\n";
    } ;
Это если каждый должен сиграть по 1 разу со всеми.

Игрок2 против Игрок1
Игрок3 против Игрок1
Игрок3 против Игрок2
Игрок4 против Игрок1
Игрок4 против Игрок2
Игрок4 против Игрок3
Игрок5 против Игрок1
Игрок5 против Игрок2
Игрок5 против Игрок3
Игрок5 против Игрок4
Игрок6 против Игрок1
Игрок6 против Игрок2
Игрок6 против Игрок3
Игрок6 против Игрок4
Игрок6 против Игрок5
 

WMix

герр M:)ller
Партнер клуба
USA
вертикаль и горизонталь это игроки, внутри - в каком раунде... так заметна закономерность (поочереди все что # уходит на 6)
читай ряд за рядом
Код:
  | 	1	2	3	4	5	6
--+----------------------------------------------------
1 |	#	2	3	4	5	1
2 |	2	#	4	5	1	3
3 |	3	4	#	1	2	5
4 |	4	5	1	#	3	2
5 |	5	1	2	3	#	4
6 |	1	3	5	2	4	#
на нечет тоже самое но ряда и столба 6 нет... отсюда и пропуски игр
PHP:
$players = 4;
$rounds = $players-1 + $players%2;


for( $player=1; $player<=$players; $player++ ){
	$bround = ($player*2-1) % $rounds;
	$bround = ( !$bround ? $rounds : $bround );
	for( $vs=$player; $vs<=$players; $vs++ ){
		if($vs==$player && !$players%2) $round[$bround][] = array($players, $vs);
		elseif(!$players%2){
			$round[$bround][] = array($player, $vs);
			$bround = ++$bround>$rounds ? 1 : $bround;
		}
		else{
			// профит
		}
	}
}
print_r($round);
 

WMix

герр M:)ller
Партнер клуба
PHP:
$players = 6;
$rounds = $players-1 + $players%2;


for( $player=1; $player<=$players; $player++ ){
	$bround = ($player*2-1) % $rounds;
	$bround = ( !$bround ? $rounds : $bround );
	for( $vs=$player; $vs<$players; $vs++ ){
		if($vs==$player) $round[$bround][] = array($players, $vs);
		else $round[$bround][] = array($player, $vs);			
		$bround = ++$bround>$rounds ? 1 : $bround;
	}
}
print_r($round);
ромбик нарисуешь?
 

USA

Новичок
мне бы чучуть попроще ромбика задачки, яб с радостью порешал бы. Типо таких как написать цикл от 0-9 не использую тело цикла ) Что то такое, что б не очень сложно и интересно и поучительно)
 

WMix

герр M:)ller
Партнер клуба
USA
разбей задачу на 2 части

для начала так к примеру
Код:
****
***
**
*
**
***
****
 

USA

Новичок
Как то так =) Вроде получилось )
PHP:
<?
echo "<pre>";
$height=4;
for($y=4; $y<=$height; $y--){  
    if($y==0){
        for($i=2; $i<=$height; $i++){
           echo str_repeat('*',$i)."\n";   
            }
    }
    if($y==0)break;
    echo str_repeat('*',$y)."\n";  
}
 ?>
PHP:
****
***
**
*
**
***
****
 

WMix

герр M:)ller
Партнер клуба
ну видишь, можешь же...
а высоту поменять это 2 цифры сменить?

есть еще один момент, внутренний цикл...
дам подсказку... переход с уменьшения на увеличенье идет ровно на половине и есть функция которая ведет себя так как мы это желаем, сначала линеарно на уменьшение а после на увеличение
 

craz

Нестандартное звание
надо бы у топикстартера для начала было бы спросить как он понимает непрерывные и дискретные процессы... По-моему лучше, чем переход от математике к программированию, ничего не формализует логику.
 

USA

Новичок
Что то я не понял. Когда код с 432101234 доходит я думал он остановится из-за $y<=$height; а код дальше работает. Его остановить можно if($y == -5)break; но теперь у меня проблема с str_repeat
PHP:
<?php
echo "<pre>";
$height=4;

for($y=4; $y<=$height; $y--){  
    
       echo abs($y)."\n";
}
 ?>
PHP:
4
3
2
1
0
1
2
3
4
5
6
7
8
9
10
.
.
я думал так будет работать )
PHP:
<?php
echo "<pre>";
$height=4;

for($y=4; $y<=$height; $y--){  
    if($y == -5)break;
     echo abs ($y).str_repeat('*')."\n";   
}
 ?>
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху