Zahlenmatrix generieren

  1. balufreak

    balufreak Thread StarterMacUser Mitglied

    Mitglied seit:
    12.10.2003
    Beiträge:
    1.556
    Zustimmungen:
    28
    Hallo Leute!

    Ich möchte mit Hilfen von PHP eine Zahlenmatrix generieren. Am schluss sollte diese etwa so aussehen

    Code:
    1  5  4  3  2  
    2  1  5  4  3 
    3  2  1  5  4
    4  3  2  1  5
    5  4  3  2  1
    
    Nun wie kann ich das bewerkstelligen? So dass keine Zahl pro Reihe doppelt vorkommt?
     
    balufreak, 13.02.2006
  2. wegus

    wegusMacUser Mitglied

    Mitglied seit:
    13.09.2004
    Beiträge:
    14.982
    Zustimmungen:
    1.545
    mach ein array von arrays,
    jede Zeile ein array.

    Dann generierst Du Zeilen a la

    PHP:
    $rows=0// wir haben noch keine Zeile
    $firstline=array();
    while (
    $rows<5)
    {
     do {
       
    $zahlerzeuge_zufalls_zahl();
     } while (
    in_array($zahl,firstline))
    array_push($zahl,$firstline);
    $rows++;
    }
    leg mich nicht auf die korrekten Methodenaufrufe fest, ich muß in letzter Zeit viel Java machen, daher betrachte es nur als Pseudocode. Mach das für alle Lines und füg die dann zur Matrix zusammen!
     
    wegus, 13.02.2006
  3. dms

    dms

    Ich weis jetzt nicht genau wie Du es meinst, balufreak.
    Ist mit Reihe jetzt gemeint dass jede Zahl nur ein mal pro Zeile vorkommen darf? Oder nur einmal pro Spalte? Oder beides?
    Ich glaube wegus hat es auch so verstanden wie ich als erstes: pro Zeile. In dem Fall geht es viel kürzer:
    PHP:
    $zahlen = array(12345);
     
    $lines array_fill(04$zahlen);
     
    array_map("shuffle"$lines);
    Ansonsten brauchst Du eine Schleife die das erste Array-Element entfern und hinten wieder anhängt. Kannst Du z.B. leicht mit array_push und array_shift machen.
     
  4. moses_78

    moses_78MacUser Mitglied

    Mitglied seit:
    08.04.2005
    Beiträge:
    1.264
    Zustimmungen:
    22
    Lege für jede Zeile ein Array an, das du dann mit "shuffle()" durcheinan-
    derwirfst. So kannst du dann sicher sein, dass jeder Wert in der Zeile ex-
    akt ein mal vorkommt.

    Edit: dms war (mal wieder) schneller...
     
    moses_78, 13.02.2006
  5. dms

    dms

    Hier noch die Möglichkeit mit array_push und array_shift. Mir is grad langweilig. ;)

    PHP:
    $zahlen = array(12345);
     
    $lines = array();

     for(
    $i=0$i<5$i++) {
        
    $lines[] = $zahlen;
        
    array_push($zahlenarray_shift($zahlen));
     }
     
  6. moses_78

    moses_78MacUser Mitglied

    Mitglied seit:
    08.04.2005
    Beiträge:
    1.264
    Zustimmungen:
    22
    Mir auch....
    PHP:
    for($i 0$i <= 10$i++)
     {
      
    $tmp = array(12345);
      
    shuffle($tmp);
      
    $zahlen_array[$i] = implode(' '$tmp);
     }
    ot:
    Warum geben array-Funktionen in PHP eigentlich boolean-Werte und keine
    Arrays zurück :motz Das ist doch unlogisch zum Quadrat...

    Und ausserdem wäre ich dann mit einer Zeile weniger ausgekommen.
     
    moses_78, 13.02.2006
  7. dms

    dms

    Warum das so ist kann ich Dir auch nicht sagen. Diese Funktionen ändern halt direkt das übergebene Array selbst und liefern ggf. zurück ob die Aktion geklückt ist. *schulterzuck* Is halt so. :)
     
  8. moses_78

    moses_78MacUser Mitglied

    Mitglied seit:
    08.04.2005
    Beiträge:
    1.264
    Zustimmungen:
    22
    Ich habe das verdammte Gefühl, dass ich bald mal PHP-Dokus wälzen
    und eigene Functions, welche anstatt Bool-Werten Arrays zurückgeben,
    in PHP implementieren muss ;)
     
    moses_78, 13.02.2006
  9. dms

    dms

    Teilweise leuchtets mir gerade ein. array_shift z.B. liefert ja das rausgeschmissene Element zurück. Demnach muss es das array selbst ändern, denn es kann ja nicht den rausgeschmissenen Wert und ein neues Array gleichzeitig zurückgeben. Dort macht es also Sinn. Um nicht noch mehr Verwirrung zu stiften verhalten sich andere Array-Funktionen evtl. genauso.
     
  10. michanismus

    michanismusMacUser Mitglied

    Mitglied seit:
    23.08.2004
    Beiträge:
    434
    Zustimmungen:
    0
    Das ist schon in Ordnung, zum einen was dms
    angesprochen hat mit array_shift, zum anderen,
    denkst du es ist sinnvoll Array's mit mehreren
    tausend Elementen nach jedem PHP Seitenaufruf
    durch den Speicher zu jagen und doppelt anzulegen ;)
    Ich denke es kommt nur dem Speicher zu Gute...

    Gruß,
    Micha
     
    michanismus, 15.02.2006
Die Seite wird geladen...
Ähnliche Themen - Zahlenmatrix generieren
  1. cilex
    Antworten:
    4
    Aufrufe:
    582
    chrizke
    14.08.2008
  2. sideshow
    Antworten:
    2
    Aufrufe:
    1.564
    sideshow
    21.01.2008
  3. XtreX
    Antworten:
    3
    Aufrufe:
    592
  4. ZeitenWandel

    Id generieren

    ZeitenWandel, 24.02.2005, im Forum: Web-Programmierung
    Antworten:
    3
    Aufrufe:
    600
    ZeitenWandel
    24.02.2005