Formel gesucht

Von: , Frage gestellt am Mi, 19. Jul 2000

Hallo,

ansich ist es ein programmiertechnisches Problem, aber mti mathematischer Grundlage,

gegeben sei ein "Baum", der in jeder Ebene ein Element mehr besitzt als ind er vorherigen, ich werde ihn mal folgendermassen darstellen:

1
2  3
4  5  6
7  8  9 10
11 12 13 14 15


dies kann beliebig viele Elemente enthalten.
Ich möchte nun zu einer beliebigen Zahl jeweils die Zahl ausrechnen, di direkt drübersteht (wenn da keine steht, weil es das Element ganz links ist, dann die daneben).

Also:
3 -> 1 (aber auch 2 -> 1)
9 -> 5
13 -> 8

Kann mir jemand dazu eine mathematische Beziehung formulieren?
ich denke mal es gibt eine... vielleicht seht ihr die schneller als ich...

Bruno

14 Antworten zu dieser Frage

  1. Antwort von nach 21 Minuten hilfreich
    Re: Formel gesucht

    Du brauchst auf jeden Fall noch eine weitere Info wenn di Reihe weitergehen soll (z.b.: die erste Zahl unten oder so), weil sich die zahlen wiederholen wenn man die reihe weiterführt. Bei der nächsten Spalte stimmt die 11 und 7 und 4 noch weil da die diagonale Regel gilt aber bei der Übernächsten gibts Probleme mit der 8: einaml steht über der 8 ne 4 (3te Spalte) und einmal ne 5 (letzte Spalte die dasteht) (dasselbe mit den beiden 3ern) außerdem ist offen was bei ? hinkommt (gibts nur positive Zahlen?).

       
    ?
    1  2
    1  2  3
    2  3  4  5 
    4  5  6  7  8
    7  8  9 10 11 12
    11 12 13 14 15 16 17
    :

    • Antwort von nach 33 Minuten hilfreich
      Re^2: Formel gesucht

      äääh ich versteh deine Frage nicht so ganz.
      Also den Sonderfall 1 kann ich leicht abfangen, unter 1 geht es nicht.

      Ich glaub ich han das auch nicht ganz verständlich beschrieben, es handelt sich hier einfach um eine aufsteigende Liste aller natürlichen Zahlen von 1 bis N:

      also 1,2,3,4,5,6,7,8,9,10,11,12....N

      die werden aber so angeordnet dass in jeder Zeile ein Element mehr steht als in der davor, in der 1. Zeile steht nur das Element 1.

      bei N=3 z.b.:

      1
      2 3
      


      bei N=5:

      1
      2 3
      4 5
      


      bei N=19:

      1
      2  3
      4  5  6
      7  8  9 10
      11 12 13 14 15
      16 17 18 19
      


      verständlich?

      Bruno

  2. Antwort von nach 32 Minuten hilfreich
    Re: Formel gesucht

    1
    2  3
    4  5  6
    7  8  9 10
    11 12 13 14 15
    

    Hi,

    Du hast bis zur n-ten Zeile n(n+1)/2 Zahlen, so dass also n(n+1)/2-k unter n(n-1)/2-k steht. Die Differenz ist die Zeilenl"ange der n-ten Spalte, also n, und um zu einer Zahl das passende n zu finden... also entweder eine Tabelle mit den Zeilenenden oder Wurzel-ziehen und nachpr"ufen mit Korrektur um ens nach oben/unten

    n(n-1)/2<m<=n(n+1)/2, dann ist auch
    n-1<Wurzel(2m)<n+1, also n der ganzzahlige Teil von Wurzel(2m).

    Ciao Lutz

    • Antwort von nach 49 Minuten hilfreich
      Re^2: Formel gesucht

      Hi,

      Du hast bis zur n-ten Zeile n(n+1)/2 Zahlen, so dass also
      n(n+1)/2-k unter n(n-1)/2-k steht. Die Differenz ist die
      Zeilenl"ange der n-ten Spalte, also n, und um zu einer Zahl
      das passende n zu finden... also entweder eine Tabelle mit den
      Zeilenenden oder Wurzel-ziehen und nachpr"ufen mit Korrektur
      um ens nach oben/unten

      n(n-1)/2<m<=n(n+1)/2, dann ist auch
      n-1<Wurzel(2m)<n+1, also n der ganzzahlige Teil von
      Wurzel(2m).
      sorry ich bin dumm, hehe eben kein Mathematiker eigentlich..
      also dass ich in der n-ten Zeile n(n+1)/2 Zahlen habe, das verstehe ich noch über einen geometrischen Ansatz erkennt man das leicht.
      Aber wie kann ich jetzt z.b. ausrechnen in welcher Zeile die Zahl 18 steht?

      Und wie kann ich sofort erkennen, dass z.b. 7 einer dieser Sonderfälle ist, in dem eigentlich 8 betrachtet werden muss.
      Weil diese Zahlen links folgen ja irgendwie einem gesetzt:

      1 (+1) = 2
      2 (+2) = 4
      4 (+3) = 7
      7 (+4) = 11

      kann man eine Bedingung ausdrücken, die einem sofort berechnet ob z.b. 11 eine dieser Zahlen ist?

      danke
      Bruno

  3. Antwort von nach 3 Stunden hilfreich
    Re: Formel gesucht

    1
    2  3
    4  5  6
    7  8  9 10
    11 12 13 14 15
    


    Ich möchte nun zu einer beliebigen Zahl jeweils die Zahl
    ausrechnen, di direkt drübersteht (wenn da keine steht, weil
    es das Element ganz links ist, dann die daneben).
    Zunächst würde ich die Zeile Z berechnen, in der die gegebenen zahl X steht: Z = INT(SQRT(0.25+2(X-1))+0.5)

    Dann würde ich Testen, ob es sich um eine Zahl handelt, die ganz links steht. Das ist dann der Fall, wenn X = Z(Z-1)/2+1 gilt.

    Handelt es sich um einen Sonderfall, dann erhalte ich die gesuchte Zahl Y gemäß Y = X-Z+1 ansonsten gilt Y = X-Z.

    In einem Pascal-Programm würde das so aussehen:
    function NumberOverThisNumber(X:Integer):Integer ;
    var
    Z: Integer ;
    begin
    Z:=round(int(sqrt(0.25+2*(X-1))+0.5)) ;
    if X=Z*(Z-1)/2+1 then Result:=X-Z+1 else Result:=X-Z ;
    end ;
    

    • Antwort von nach 3 Stunden hilfreich
      Re^2: Formel gesucht

      Zunächst würde ich die Zeile Z berechnen, in der die
      gegebenen zahl X steht: Z =
      INT(SQRT(0.25+2(X-1))+0.5)

      da muss noch irgendwo n Fehler drinstecken leider...
      ansich such ich genau sowas wie du mir hier gegeben hast, aber probier mal z.b. mit der Zahl 3

      3-1=2
      2*2=4
      4+0,25=4,25
      sqrt(2,25)=2,06..
      2,06+0,5=2,56
      Round(2,56)=3

      Die Zahl 3 liegt aber in der Zeile 2.

      Hast du ne Idee worans liegt? Kanns leider nicht korrigieren weil ich den Ansatz auch nicht verstehe. Der is mir auch nicth weiter wichtig, so es funktionieren würde ;)

      Bruno

      • Antwort von nach 4 Stunden hilfreich
        ach so....

        Habs glaub falsch verstanden, wenn ich nicht runde, sondern "floore", also den Rest einfach abschneide, dann scheints zu gehen.

        bru

        • Antwort von nach 4 Stunden hilfreich
          Yeah!

          Habs grad mal für die ersten 20 Werte überprüft, stimmt immer :)
          dann geh ich mal davon aus, dass es korrekt ist.
          Mehr als 20 wirds vermutlich sowieso nicht werden, deswegen dachte ich auch schon dran es hart für alle 20 Fälle einzucodieren, aber so ists natürlich besser :)

          Tausend Dank

          Bruno

        • Antwort von nach 5 Stunden hilfreich
          Re: ach so....

          Habs glaub falsch verstanden, wenn ich nicht runde, sondern
          "floore", also den Rest einfach abschneide, dann scheints zu
          gehen.
          Wenn man rundet müßte man nicht FLOOR(SQRT(0.25+2(X-1))+0.5), sondern nur ROUND(SQRT(0.25+2(X-1))) nehmen.



Keine passende Antwort gefunden? Jetzt eigene Frage stellen!