Avatar billede hatting Nybegynder
04. december 2010 - 14:59 Der er 3 kommentarer og
1 løsning

Array hjælp

Jeg skal lave en genering af skak kampe, hvor jeg har 6 spillere i et array, de skal så sættes op mod hinanden 1 gang mod hver. og skal deles op i 5 tidspunkter. Ligesom fodbold gruppespil ;-)

Der regnes ud hvor mange tidspunkter udfra antallet i array'et - f.eks. 6 kræver 15 spil og 15 / (antal i array/2)

Array
(
    [0] => 12
    [1] => 11
    [2] => 10
    [3] => 9
    [4] => 8
    [5] => 7
)

Eks.:

Kl. 12:
12-11
10-9
8-7

Kl. 13:
11-10
9-8
7-12

Kl. 14:
10-8
7-11
12-9

Kl. 15:
10-12
8-11
7-9

Kl. 16:
10-7
8-12
11-9

Nogle forslag til hvordan man kan gøre dette på den mest optimale måde?

Det kan også forekomme der er f.eks. 5 i et array eller et andet antal.
Avatar billede limemedia Nybegynder
04. december 2010 - 16:41 #1
Altid samme antal borde, altid samme tidspunkter ?
Avatar billede hatting Nybegynder
04. december 2010 - 16:53 #2
Har fået arbejdet mig lidt frem til en function som muligvis kan være svaret.. ved at tjekke igennem om de har mødt hinanden..

Tidspunkter ikke altid de samme, og antal borde vil også være forskelligt efter antal i array'et, f.eks. hvis nu der er 8 i stedet for 6, der skal 3 borde til 6 deltagere, og 4 borde til 8 deltagere.

altså deltagere / 2..

Så kan man så beregne antal spil med ((DELTAGERE*(DELTAGERE - 1))/2) - så 15 for 6 deltagere..

Men som sagt arbejder jeg lidt med at lave en function der ser arrayet igennem, hvis de har spillet, forsætter en while med at sætte spil op indtil den ikke finder et match.. Det kræver desværre bare meget load tid, og derfor stadig intresseret i andre forslag..
Avatar billede limemedia Nybegynder
04. december 2010 - 17:52 #3
Saa kan du selv ligge den ind i en tabel eller hvordan det layoutmaessigt bedst passer dig

<?php
    $games = array(
        'eksempel 2 spillere' => array(12,11),
        'eksempel 3 spillere' => array(12,11,10),
        'eksempel 4 spillere' => array(12,11,10,9),
        'eksempel 5 spillere' => array(12,11,10,9,8),
        'eksempel 6 spillere' => array(12,11,10,9,8,7),
        'eksempel 7 spillere' => array(12,11,10,9,8,7,6),
        'eksempel 8 spillere' => array(12,11,10,9,8,7,6,5),
        'eksempel 9 spillere' => array(12,11,10,9,8,7,6,5,4),
        'eksempel 10 spillere' => array(12,11,10,9,8,7,6,5,4,3),
    );

    reset($games);
   
    while (list($game, $players) = each($games)) {
        echo $game.'<br />';
       
        reset($players);
       
        $count = sizeof($players);
       
        for ($i=0; $i<$count; $i++) {
            for ($j=$i+1; $j<$count; $j++) {
                echo $players[$i].' vs '.$players[$j].'<br />';
            }
        }
    }
?>

http://www.tokyoidealab.com/e1.php
Avatar billede hatting Nybegynder
04. december 2010 - 19:09 #4
Havde lidt en ligende løsning, men ikke så kort, jeg siger tak og arbejder lidt videre med at få tilføjet tidspunkter. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester