modulo Operator



  • Guten Abend,

    ich habe eine Frage die mir ein kleinwenig peinlich ist, weil sie denke ich eigentlich sehr einfach zu beantworten ist und ich schlichtweg ein Brett vorm Kopf habe^^

    Ausgangssituation:
    Ich soll in C ein Game of Life programmieren, habe das soweit auch alles verstanden und mein Game of Life funktioniert auch soweit:
    1. Erstellung eines zweidimensionalen Arrays in beliebiger Abmessung (wird per Kommandozeile übergeben).
    Zufällige Besetzung des Arrays mit lebenden/toten Zellen
    2. Funktion zum Updaten des Spielfeldes kopiert zunächst das zweidimensionale Feld in ein anderes zweidimensionales Feld zur Zwischenspeicherung, damit ich beim Update nicht auf einmal verfälschte Ergebnisse aufgrund bereits aktualisierter Nachbarzellen erhalte.

    Meine Problematik ist nun, dass das Feld als Torus angelegt sein soll, also beim überschreiten der Grenzen/Ecken auf der gegenüberliegenden Seite fortfahren soll. Ich habe schon den Tipp erhalten, das Ganze mit em Modulo-Operator zu lösen, aber ich habe hier irgendwie ein Brett vorm Kopf...
    Für mich ist der Modulo Operator eine Möglichkeit, zu überprüfen, ob ein Wert gerade oder ungerade ist oder ob eine Division eben einen Rest besitzt, oder nicht.
    Mit fehlt die Übertragung, wie ich damit mein Problem des handelns von negativen bzw. über die Grenzen gehenden Koordinaten meine zweidimensionalen Feldes lösen kann.
    Diverse Googleeskapaden sind bisher leider erfolglos geblieben 😞

    Ich verlange keine komplette Auflösung, vielleicht reicht schon der ein oder andere Tipp^^

    Vielen Dank!



  • sei das spielfeld mal 1000 lästchen hoch und breit.

    ydrunter=(y+1)%1000;
    xrechts=(x+1)%1000;
    ydrueber=(y+999)%1000;
    xlinks=(x+999)%1000;
    


  • Dann nimm mal einen anderen Wert als 2.

    Der Modulo-Operator gibt dir den Rest eine Ganzzahldivision. So wie in der Grundschule.

    23 % 5 = 3
    23 % 21 = 2



  • Oh mein Gott, ich wusste doch, ich hab nen Brett vorm Kopp....:P

    Vielen Dank für die schnelle Hilfe, jetzt fällt es mir wie Schuppen von den Augen...

    Sorry für die "dumme" Frage^^



  • Für das GOL kann es praktischer sein, das Spielfeld 1002x1002 zu machen und sich erst einmal nicht um den Überlauf kümmern. Der Rand wird dann in einem nächsten Schritt gefixt.

    So sind 998x998 Felder etwas schneller und 4*999 Felder etwas langsamer, aber insgesamt zahlt sich das aus.


Anmelden zum Antworten