M-am lovit recent de o problema care nu reusesc sa o rezolv.
Ideea e ca imi trebuie o matrice (array de arrayuri) patratica in care pe prima coloana sa fie id-ul unei echipe de fotbal (de la 1 la 2n) si pe urmatoarele id-urile echipelor cu care joaca in decursul unui campionat.
Deci practic pe fiecare coloana sau rand sa nu apara acelas id. Pe randul x la coloana k>0 sa fie id-ul y si in acelas timp pe randul y la coloana k>0 sa fie x.
Problema sa poata fi rezolvata pentru orice nr par. Ceva de genu:
1 3 5 2 4 6
2 4 3 1 6 5
3 1 2 6 5 4
4 2 6 5 1 3
5 6 1 4 3 2
6 5 4 3 2 1
Sper ca n-o sa va toace nervii cum m-a tocat pe mine problema
program pentru Campionat de fotbal[l-am dibuit]
Moderatori: Zamolxe, Moderatori
program pentru Campionat de fotbal[l-am dibuit]
Ultima oară modificat Mie Aug 13, 2008 12:36 pm de către cornel, modificat 1 dată în total.
- gabysolomon
- Senior Member
- Mesaje: 743
- Membru din: Dum Apr 09, 2006 11:39 am
- Localitate: Bacau
- Contact:
off the top of my head ...
nu am testat ... dar sper ca merge
nu am testat ... dar sper ca merge
Cod: Selectaţi tot
function generate_array($max){
$array = array();
for ( $i=1; $i<=$max; $i++ ) {
$values [$i] = $i;
}
for ( $i=1; $i<=$max; $i++ ) {
$row = array();
$row[] = $i;
$end_row = false;
$values_temp = $values;
unset( $values_temp[$i] );
for ( $j=1; $j<$max;$j++ ) {
$rand = array_rand($values_temp);
$row[] = $values_temp[$rand[0]];
unset($values_temp[$rand[0]]);
}
$array[] = $row;
}
}
Cornel, îți „sună” cunoscută matricea asta? Uită-te atent la ea:

Cod: Selectaţi tot
1 2 3 4 5 6
2 3 4 5 6 1
3 4 5 6 1 2
4 5 6 1 2 3
5 6 1 2 3 4
6 1 2 3 4 5Imi pare rau, u e asta
imi da o coloana cu numere de la 1 la $max si $max-1 coloane nule. Nu am timp sa debugesc functia.
oricum multumesc pentru incercare.
Pe hartie stiu mecanismul, dar nu imi dau seama cum sa il pun in practica intr-o functie.
oricum multumesc pentru incercare.
Pe hartie stiu mecanismul, dar nu imi dau seama cum sa il pun in practica intr-o functie.
ebogdan scrie:Cornel, îți „sună” cunoscută matricea asta? Uită-te atent la ea:Cod: Selectaţi tot
1 2 3 4 5 6
2 3 4 5 6 1
3 4 5 6 1 2
4 5 6 1 2 3
5 6 1 2 3 4
6 1 2 3 4 5
da, sunt numere diferite pe fiecare rand si pe fiecare coloana, da nu asta imi trebuie. Daca te uiti bine, echipa 1 joaca in prima etapa cu 2 si echipa 2 joaca in prima etapa cu 3
!!!!!!!!!! AM REUSIT !!!!!!!!!!!
L-am testat, merge.
Stiti care e prostia? Sunt sigur ca am mai scris codu asta odata, da nu am sortat array-u si cand l-am scris, l-am scris cu foreach[/code]
Cod: Selectaţi tot
function Campionat($max)
{
$array=array(array());
for($i=1;$i<=$max;$i++)
{
$array[$i][0] = $i;
}
for($i=$max-1;$i>0;$i--)
{
$col = $max-$i;
for($j=$max;$j>1;$j--)
{
if($col>$max-1) $col = 1;
$array[$i][$col] = $col;
$col++;
}
}
$newArray=array();
$i=0;
foreach($array as $k1=>$ech)
{
foreach($ech as $k2=>$et)
{
$newArray[$i][$j] = $array[$k1][$k2];
$j++;
}
$i++;
$j=0;
}
for($i=1;$i<$max;$i++)
{
for($j=1;$j<$max;$j++)
{
if($newArray[$i][$j] == $i) {
$newArray[$i][$j] = $max;
$newArray[$max][$j] = $i;
}
}
}
[b]ksort[/b]($newArray[$max]);
return $newArray;
}
Stiti care e prostia? Sunt sigur ca am mai scris codu asta odata, da nu am sortat array-u si cand l-am scris, l-am scris cu foreach[/code]
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 27 vizitatori
