Kleiner Zeitvertreib
-
Wer sowas lustig findet, moechte sich ja vielleicht auch mal Gedanken darueber machen, nach welcher Formel wohl folgende Zahlenreihe gebildet wurde, und wie sie fortgesetzt wird:
0, 10, 35, 85, 170, 300, ?Ich weiss es nicht - ich wusel mich gerade in den Code, der diese Reihe erzeugt. Wenn ich's gefunden habe, kann endgueltig verifiziert werden.

-
495 :p
0 10 35 85 170 300 495 +10 +25 +50 +85 +130 +195 +15 +25 +30 +55 +65 +10 +5 +15 +10 -5 +10 -5Vermutlich falsch, aber von der Logik her nicht unmöglich

-
-
árn[y]ék schrieb:
495 :p
0 10 35 85 170 300 495 +10 +25 +50 +85 +130 +195 +15 +25 +30 +55 +65 +10 +5 +15 +10 -5 +10 -5Vermutlich falsch, aber von der Logik her nicht unmöglich

ich komm auf 505

ebenfalls vermutlich falsch
-
blöder zeitvertreib, jetzt bin ich zu spät zum lunch..
-
zwutz schrieb:
árn[y]ék schrieb:
495 :p
0 10 35 85 170 300 495 +10 +25 +50 +85 +130 +195 +15 +25 +30 +55 +65 +10 +5 +15 +10 -5 +10 -5Vermutlich falsch, aber von der Logik her nicht unmöglich

ich komm auf 505

ebenfalls vermutlich falsch
Jep, aber árn[y]ék liegt naeher dran: Das naechste waere 485. :p
Leider habe ich den ver*%& Algo immer noch nicht gefunden - 128kiloByte Programmcode koennen ganz schoen unuebersichtlich sein.
-
hm... vll täusch ich mich ja
0 10 35 85 170 300 485 +10 +25 +50 +85 +130 +185 +15 +25 +35 +45 +55 +10 +10 +10 +10árn[y]ék hat richtig angefangen, allerdings hat er im dritten Schritt für 130-85 55 als Ergebnis, richtig ist aber 45
-
Wenn man sukzessive Differenzen bildet fuehrt das letztendlich zum selben Ergebnis wie eine Polynom-Interpolation. Hier braucht man anscheinend 3 Iterationen um auf konstant +10 zu kommen. Das heisst, ein Polynom 3. Grades genuegt um die y-Werte 0, 10, 35, 85, 170, 300, 485 zu interpolieren, mit den x-Werten 0,1,2,3,4,5,6.
In dem Fall waere es zum Beispiel . Das Prinzip funktioniert aber allgemein; damit kann man solche Folgen extrapolieren ohne das "beste" interpolierende Polynom explizit hinschreiben zu muessen.
-
Christoph schrieb:
Wenn man sukzessive Differenzen bildet fuehrt das letztendlich zum selben Ergebnis wie eine Polynom-Interpolation. Hier braucht man anscheinend 3 Iterationen um auf konstant +10 zu kommen. Das heisst, ein Polynom 3. Grades genuegt um die y-Werte 0, 10, 35, 85, 170, 300, 485 zu interpolieren, mit den x-Werten 0,1,2,3,4,5,6.
In dem Fall waere es zum Beispiel . Das Prinzip funktioniert aber allgemein; damit kann man solche Folgen extrapolieren ohne das "beste" interpolierende Polynom explizit hinschreiben zu muessen.
ich musste deinen Beitrag zwar ungefähr 5mal durchlesen, aber ich glaub, ich habs verstanden ^^
Danke für die Erklärung... kannst du mir auch noch verraten, wie du auf die Formel gekommen bist?
-
Hm, klingt so weit sehr gut, und haut fuer die ersten Level offenbar auch hin.
Ich habe aber noch ein paar hoehere Werte:
145 (oder 144, wenn 0-basiert) muesste zB.14.069.736 (mehr verlaessliche Werte habe ich erstmal aber wirklich nicht :D)...
Wie gesagt: Keine Ahnung, ob bei hoeheren Werten ploetzlich die Formel gewechselt wird oder was sonst fuer Spaesse - ich denke doch aber mal unwahrscheinlich. Zudem sollte ich vielleicht noch anmerken, dass der Algo hoechst wahrscheinlich nur mit ints rechnet.
Edit: Ha, SkillZ!
Endlich habe ich das olle Gefrickel. 
In Java uebersetzt sieht es in etwa so aus:
static int so_level2exp(int level) { if (level >=255) return (1000000000); if (level <= 1) return (0); int exp = 0; for (int lv_cnt = 1; lv_cnt<level; lv_cnt++) { if (lv_cnt < 100) { exp+=(lv_cnt*lv_cnt+1)* ( (int)((((long)lv_cnt-1)*0x66666667)>>34) - ((lv_cnt-1)>>0x1f) +5 ); } else { exp+=((lv_cnt*lv_cnt+1)<<4)-(lv_cnt*lv_cnt+1); } } return (exp); }Also doch eine Fallunterscheidung fuer >=100... Naja, fuer alle kleinere Werte tut's Christophs Formel aber.
