zufallszuordnung ohne wiederholung

  • Ich habe 81 Variabeln und möchte denen jeweils einen Wert zuordnen. Und zwar habe ich eigentlich ein 9 x 9 Gitter mit einer Variable pro Feld. Inhalt des ersten Feldes ist dann $aa (=${$alphabet[0].$alphabet[0]}), das nächste Feld in dieser Zeile $ab (=${$alphabet[0].$alphabet[1]}), sprich die erste Variable in der Variabe beschreibt die Zeile und die zweite Variable in der Variable beschreibt die Spalte. $aa bedeutet demnach also erste Spalte, erste Zeile.
    Den Inhalt eines Feldes generiere ich mit einer Zufallszahl von 1-9. Ziel ist es dass in einer Zeile eine bestimmte Zahl nur einmal vorkommt, also wie beim Sudoku ($aa darf nicht gleich $aj sein).

    Habe bisher folgenden Code und komme irgendwie einfach nicht mehr weiter, alles Probieren hat nichts genützt.

  • Hier mal ein Ansatz von mir ;)


    EDIT und falls du ein Sudoku machen möchtest müsstest du auch noch überprüfen ob der Wert in der Spalte vorkommt, z.B. so:

    :mrgreen: was ein spaß^^ :mrgreen:

    Gruß crAzywuLf :D

    2 Mal editiert, zuletzt von crAzywuLf (17. März 2010 um 17:21)

  • Die Funktion benötigt aber auch $table ;)
    Und ich würde da schon isset() reinbauen. Du kannst die Notices die da en masse geschmissen werden zwar ausstellen, aber sauberes Programmieren ist das nicht. ;)

    Im Aufruf der Funktion dann natürlich noch $table ergänzen und optional, aber empfohlen, $zeile_aktuell. Alle Zeilen danach brauchen nicht mehr geprüft zu werden, die sind ja noch nicht belegt. Und die Funktion wird damit auch für mehr als 9 Zeilen nutzbar.


    @RMB klar wird das aufgerufen, wenn der Wert nicht gefunden wird ;)
    Das ist ja der Sinn der Funktion...
    Edit: Blödsinn, natürlich nicht, war grad verpeilt, hast Recht mit dem break ^^

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • @cr@zywulf
    das war fies, der merkt doch nicht das deine funktion "in_spalte" nicht funktioniert ;)
    und wieso ein break nach dem return? Das nach dem return wird nie ausgeführt...

    klar hast ja recht^^ hatte nur ne minute dafür zeit ^^ wollte feierabend machen :D isset und global fehlen ja auch^^

    edit: ich werd das morgen auf der arbeit nochmal überdenken^^ das könnte theoretisch ewig dauern, das ist so viel zu unperformant

    Gruß crAzywuLf :D

    2 Mal editiert, zuletzt von crAzywuLf (17. März 2010 um 20:20)