Цикл for

  • Автор темы Автор темы USA
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.
каждая команда должна сыграть друг с другом
уже их постановки задачи ясно что самое логическое решение - это два цикла, чтобы получилось каждый с каждым.
PHP:
foreach($teams as $home) {
    foreach(team as $away) {
        // здесь логика, не забывая что команда не играет сама с собой
    }
}
 
USA
напиши правило как определяется таблица игр...
 
AmdY
1 тур

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

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

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

почему Игрок4 не играет ни с 1 ни с 3м?
 
ХакИрФсимагущий
на production написанно только
PHP:
$x = 10000001;
остальное дебаг...
можно попросить тебя для оптимизации выбрать другой топик?
 
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"; 
    }
}
 
туров будет на 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
 
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);
 
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);

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

для начала так к примеру
Код:
****
***
**
*
**
***
****
 
Как то так =) Вроде получилось )
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:
****
***
**
*
**
***
****
 
ну видишь, можешь же...
а высоту поменять это 2 цифры сменить?

есть еще один момент, внутренний цикл...
дам подсказку... переход с уменьшения на увеличенье идет ровно на половине и есть функция которая ведет себя так как мы это желаем, сначала линеарно на уменьшение а после на увеличение
95_1.gif
 
надо бы у топикстартера для начала было бы спросить как он понимает непрерывные и дискретные процессы... По-моему лучше, чем переход от математике к программированию, ничего не формализует логику.
 
Что то я не понял. Когда код с 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";   
}
 ?>
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху