Avatar billede kimg Nybegynder
12. februar 2003 - 13:07 Der er 11 kommentarer og
1 løsning

random

Hvordan kan jeg sætte nedenstående ind i en tabel, med 3 rækker og 9 kolonner. 1'ste række under 10 næste række under 20 o.s.v.
Og samtidigt må der kun være 5 tal i hver række.
Jeg har prøvet en masse, men kan ikke lige fange tråden.

Kim
<?

$numbers = array();
$rowarray = array(1,2,3,4,5,6,7,8,9,10,0,0,0,0,0);
$counter = 0;

while($counter < 15) {
    $number = rand(0, 9);
    $row = $rowarray[$counter];
    if(!$row) $row = rand(1,10);
    $number = ($row-1)*10 + $number;
    if($number > 90) $number = 90;
    if($number) {  // Number kan være 0 - hop uden om hvis det er tilfældet!
        for($g=0;$g<sizeof($numbers);$g++) {
            if($numbers[$g] == $number) {
                $number = 0;
                break;
            }
        }
    }
    if($number) $numbers[$counter++] = $number;
}

// Udskriv numre:
for($n=0;$n<sizeof($numbers);$n++) {
    echo "$numbers[$n] ";
}

?>
Koden er lavet af "Angarm" og virker fint til at genere 15 tal

Kim
Avatar billede kimg Nybegynder
12. februar 2003 - 13:08 #1
Kolonne 9 kan indeholde tallet 90
Avatar billede olebole Juniormester
12. februar 2003 - 19:44 #2
<ole>

Det ligner unægtelig noget bingo-noget, men har du så ikke lidt rod i 'rækker' og 'kolonner' i dit spm? Skal dette ikke være kolonner:
"1'ste række under 10 næste række under 20 o.s.v."?

Desuden danner funktionen fast 90 på 10. plads.

Kom lige igen med lidt feedback, så må vi se på det  :)

/mvh
90

</bole>
Avatar billede kimg Nybegynder
12. februar 2003 - 20:37 #3
Ja, det er banko plader, det er 3 rækker og 9 kolonner.
Avatar billede kimg Nybegynder
12. februar 2003 - 21:17 #4
Jo, selvfølgelig "1'ste række under 10 næste række under 20 o.s.v." kolonner
Kim
Avatar billede olebole Juniormester
12. februar 2003 - 21:47 #5
Dette burde funke:

<?

$numArr = array( 9, 19, 29, 39, 49, 59, 69, 79, 90 );
function getCol() {
    global $colArr;
    $out = rand( 0, 8 );
    return ( !in_array($out, $colArr) )? $out : getCol();
}
function fillColArr() {
    global $colArr;
    $colArr = array();
    for ($i=0; count($colArr)<5; $i++) {
        $colArr[] = getCol();
    }
    sort($colArr);
}
function getNum( $j ) {
    global $plateArr, $colArr, $numArr;
    if ( in_array($j, $colArr) ) {
        $inx = ( $j<8 )? 9 : 10;
        $num = rand( $numArr[$j]-$inx, $numArr[$j] );
    }
    else $num = "&nbsp;";
    if ( $j==0 && $num===0 ) $num = 1;
    if ( $num=="&nbsp;" || !in_array($num, $plateArr) ) {
        $plateArr[] = $num;
        return $num;
    }
    else return getNum($j);
}
function getRow() {
    global $numArr, $colArr;
    fillColArr();
    $str = "<tr>\n";
    for ($j=0; $j<9; $j++) {
        $str .= "<td>".getNum($j)."</td>";
    }
    return $str."</tr>\n";
}
function getTable() {
    global $plateArr;
    $plateArr = array();
    $tbl = "<table border=\"1\">\n";
    for ($k=0; $k<3; $k++) {
        $tbl .= getRow();
    }
    return $tbl."</table>\n";
}

?>

<html>
<head>
<style type="text/css">
td {
    width: 30px;
    text-align: center;
}
</style>
</head>

<body>

<?=getTable();?>

</body>
</html>
Avatar billede olebole Juniormester
12. februar 2003 - 21:48 #6
Kunne sikkert ryttes lidt op, men det er, hvad du får for den 25-øre  ;o)
/mvh
90
Avatar billede kimg Nybegynder
12. februar 2003 - 21:58 #7
Det er jo fantastisk, er det muligt at få den til at vælge mindst 1 tal i alle kolonnerne.

Kim
Avatar billede olebole Juniormester
12. februar 2003 - 22:31 #8
Hvad mener du ... highligter det, gøre det bold - eller?
Avatar billede kimg Nybegynder
12. februar 2003 - 22:33 #9
Nej, sådan at der ikke er en eller 2 kolonner der er tomme (uden tal).

Kim
Avatar billede olebole Juniormester
12. februar 2003 - 23:23 #10
Jo, uden tvivl - men så må du selv pille videre med den. Den slags ville være rart at vide, inden script'et blev skrevet  :)
/mvh
Avatar billede kimg Nybegynder
12. februar 2003 - 23:27 #11
Jeg takker for hjælpen, imponerende stykke kode.
jeg prøver at finde ud af noget ;-)

Kim
Avatar billede olebole Juniormester
12. februar 2003 - 23:34 #12
selvtak  :)
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