program pentru Campionat de fotbal[l-am dibuit]

Ai o întrebare legată de PHP? Incercăm să îi găsim soluţie. Sau poate doar vrei să publici un cod interesant.

Moderatori: Zamolxe, Moderatori

cornel
Junior Member
Mesaje: 36
Membru din: Mar Aug 05, 2008 4:19 pm
Localitate: craiova

program pentru Campionat de fotbal[l-am dibuit]

Mesajde cornel » Lun Aug 11, 2008 9:47 am

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
Ultima oară modificat Mie Aug 13, 2008 12:36 pm de către cornel, modificat 1 dată în total.



Avatar utilizator
gabysolomon
Senior Member
Mesaje: 743
Membru din: Dum Apr 09, 2006 11:39 am
Localitate: Bacau
Contact:

Mesajde gabysolomon » Lun Aug 11, 2008 8:40 pm

off the top of my head ...
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;
  }
}

ebogdan
Senior Member
Mesaje: 218
Membru din: Joi Iul 27, 2006 2:45 pm
Localitate: Constanta

Mesajde ebogdan » Mar Aug 12, 2008 9:51 am

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


:wink:

cornel
Junior Member
Mesaje: 36
Membru din: Mar Aug 05, 2008 4:19 pm
Localitate: craiova

Imi pare rau, u e asta

Mesajde cornel » Mar Aug 12, 2008 10:31 am

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.

cornel
Junior Member
Mesaje: 36
Membru din: Mar Aug 05, 2008 4:19 pm
Localitate: craiova

Mesajde cornel » Mar Aug 12, 2008 10:35 am

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

cornel
Junior Member
Mesaje: 36
Membru din: Mar Aug 05, 2008 4:19 pm
Localitate: craiova

!!!!!!!!!! AM REUSIT !!!!!!!!!!!

Mesajde cornel » Mar Aug 12, 2008 5:07 pm

L-am testat, merge.

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]


Înapoi la “Cod PHP”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 27 vizitatori