Mathematische Funktion

  • Peace Leute.


    Ich arbeite grade an einem Koordsystem wo ich ne funktion brauche die mir nicht in den sinn kommen will.


    Ich möchte quasi jede mögliche koordinate abdecken und dabei aber einem muster folgen.


    Hier mal ein Bild dazu wo der Index eine im loop inkrementierte variable ist.



    Ich hatte auch dran gedacht 2 schleifen zu machen (x und y) aber woher dann wissen auf welcher koordinate man grade ist ohne umständlich viele variablen.


    Hier noch als beispiel der index und die dazugehörige koordinate.


    0 -> 0,0
    1 -> 1,0
    2 -> 0,1
    3 -> 2,0
    4 -> 1,1
    5 -> 0,2
    6 -> 3,0
    7 -> 2,2
    8 -> 1,3



    Hat wer ne Idee wie man das am besten löst?


    danke im vorraus :)

  • in autoit könnte man das ganze so lösen:

    Code
    1. For $y = 0 To UBound($array,2)
    2. $tmp = $y
    3. For $x=0 To $y-1
    4. If $x=UBound($array) Then ExitLoop
    5. $tmp -= 1
    6. ConsoleWrite($array[$x][$tmp]&@CRLF)
    7. Next
    8. Next


    sollte ja eigentlich problemlos auf andere sprachen übertragbar sein, da du ja eh nur nach einer logik gesucht hast.


    Edit:
    hier nochmal mit deinem implementierten beispiel bild:

    i MigHt liK3 yOu beTTer iF w3 sLepT t0geTheR

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von lolkop ()

  • Also den Generator der Matrix hab ich. Ich frage mich allerdings, ob man das nicht auch irgendwie einfacher machen kann ... Sollen die Felder on-the-fly generiert und hinzugefügt werden oder liegen die bereits vorher in einer Liste und müssen nur noch entsprechend dem Algorithmus an die richtige Stelle verfrachtet werden. Im Moment läuft die Sache so ab, dass der Generator links unten anfängt und dann nach rechts wandert, dabei aber diagonal nach links oben läuft. So, wenn ich mir jetzt aber anschaue, wie die Zahlenwerte da entstehen, dann folgen die einem bestimmten Muster. Egal, ob in x oder in y-Richtung, es ist immer gleich. Es beginnt bei einem bestimmten wert, und dann kommt ein weiterer Wert. Wenn man jetzt die Differenz der beiden Werte nimmt und ihn inkrementiert und zum zweiten Wert draufaddiert, dann hat man den nächsten Wert und das geht so weiter.


    Also im Grunde genommen irgendwie sowas:

    Code
    1. Xi = Xi-1 - Xi-2 + Xi-1


    Solten die zu platzierenden Felder also bereits existieren und einfach nur in einer Liste rumfliegen, dann könnte man entsprechend ein 2-dim. Array mit den Indezes befüllen. Die Indezes zu berechnen ist leichter als das "Wandern".


    Hoffe, jemand versteht, was ich da getippt hab o.O

  • Wtf, dann penn ich schon xD Naja, mal schauen ^^


    Vergiss die Formel gleich wieder, die stimmt nur bis zu einem gewissen Zeitpunkt. Hatte den Testbereich grad etwas erhöht und hab gesehen, dass es dann ab nem bestimmten Punkt nicht mehr hinhaut ... Aber egal, macht nix ^^ Dann hier der Generator, natürlich in Java ^^


    Ausgabe bei 10x5:

    Code
    1. |14||19||24||29||34||39||43||46||48||49|
    2. | 9||13||18||23||28||33||38||42||45||47|
    3. | 5|| 8||12||17||22||27||32||37||41||44|
    4. | 2|| 4|| 7||11||16||21||26||31||36||40|
    5. | 0|| 1|| 3|| 6||10||15||20||25||30||35|


    Zum Generieren der Werte hab ich in dem Fall mal einen Generator hinzugefügt, der alles liefern kann und man somit nicht auf die bloßen Zahlen beschränkt ist.

  • das ist letztendlich der gleiche algorithmus den ich auch in meinem script hatte...
    ubound gibt die arraygröße aus.

  • wenn ich ein array in abhängigkeit der anzahl der elemente der jeweiligen dimensionen, in einer schleife durchlaufe, kann das ganze nicht abhängig von "gesamt breite/höhe und anzahl der zeilen und spalten" sein....


    naja letztendlich ist mir das ganze auch egal, da du ja die jetzige lösung anscheinend verstanden hast =)