Zahlenmatrix generieren

Diskutiere mit über: Zahlenmatrix generieren im Web-Programmierung Forum

  1. balufreak

    balufreak Thread Starter MacUser Mitglied

    Beiträge:
    1.560
    Zustimmungen:
    28
    Registriert seit:
    12.10.2003
    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?
     
  2. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.029
    Zustimmungen:
    1.314
    Registriert seit:
    13.09.2004
    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!
     
  3. dms

    dms Gast

    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_78 MacUser Mitglied

    Beiträge:
    1.322
    Zustimmungen:
    22
    Registriert seit:
    08.04.2005
    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...
     
    Zuletzt bearbeitet: 15.02.2006
  5. dms

    dms Gast

    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_78 MacUser Mitglied

    Beiträge:
    1.322
    Zustimmungen:
    22
    Registriert seit:
    08.04.2005
    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.
     
  7. dms

    dms Gast

    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_78 MacUser Mitglied

    Beiträge:
    1.322
    Zustimmungen:
    22
    Registriert seit:
    08.04.2005
    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 ;)
     
  9. dms

    dms Gast

    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

    michanismus MacUser Mitglied

    Beiträge:
    434
    Zustimmungen:
    0
    Registriert seit:
    23.08.2004
    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
     
Die Seite wird geladen...
Ähnliche Themen - Zahlenmatrix generieren Forum Datum
Tool um HTML Seiten mit Variablen zu generieren Web-Programmierung 07.08.2008
Mit PHP ASCII Textdateien generieren Web-Programmierung 21.01.2008
schräger Text als Bild generieren? Web-Programmierung 28.09.2006
Id generieren Web-Programmierung 24.02.2005

Diese Seite empfehlen

Benutzerdefinierte Suche