Ich habe eine Zahlenfolge die aus mehreren Zahlenfolgen
besteht.
Alles:
Folge: 2,7,11,2,8,6,22,5,14,5,33,8,20,4,44,11,26,3,55,18…
Glied-Nr: 1,2,03,4,5,6,07,8,09 …
Berechnung:
- 6x-4
- -1x+8
- 11x
- 3x-1
Frage: Gibt es einen Ausdruck für das n-te Glied?
z.B: n = 2’051’994
Antwort: Ja, mit Hilfe der Modulo Funktion
P.S.: Tippfehler nicht ausgeschlossen!
P.S.2: Das nennt man auch Spaghetti Code
Freundliche Grüße und viel Erfolg damit.
Die ‚Tippfehler‘ haben sich tatsächlich eingestellt: Die Gewichte müssen natürlich normiert werden. Da ich gerade einen lambda-Ausdruck in Python üben wollte (hat nicht ganz geklappt, auch habe ich ein wenig Probleme mit dem long int type), habe ich die Universum-Formel gleich ausprobiert:
Python:
**\*\*\* def a(n): return (
((n%4)//(1%4))\*((n%4-3)//(1%4-3))\*((n%4-2)//(1%4 - 2)) \* (6\* ((n+4-n%4)//4) - 4)
+ ((n%4)//(2%4))\*((n%4-3)//(2%4-3))\*((n%4-1)//(2%4 - 1)) \* (-1\* ((n+4-n%4)//4) + 8)
+ ((n%4)//(3%4))\*((n%4-2)//(3%4-2))\*((n%4-1)//(3%4 - 1)) \* (11\* ((n+4-n%4)//4) + 0)
+ ((n%4-3)//(4%4-3))\*((n%4-2)//(4%4-2))\*((n%4-1)//(4%4 - 1)) \* (3\* (((n+4-n%4)//4) -1) - 1)
)**
\*\*\* print([a(n) for n in range(1L,13L)])
SyntaxError: invalid syntax (\*pyshell#91\*, line 1)
\*\*\* print([a(n) for n in range(1,13)])
[2, 7, 11, 2, 8, 6, 22, 5, 14, 5, 33, 8]
\*\*\* 2051993%4
1
\*\*\* print(n for n in range(2051993, 2051993+4))
\*generator object \*genexpr\* at 0x01036AD0\*
\*\*\* print(n for n in range(2051993L, 2051993L+4))
SyntaxError: invalid syntax (\*pyshell#95\*, line 1)
\*\*\* print(n for n in [2051993, 2051994, 2051995, 2051996])
\*generator object \*genexpr\* at 0x01036AA8\*
**\>\>\> print([a(n) for n in range(1,121)])
[2, 7, 11, 2, 8, 6, 22, 5, 14, 5, 33, 8, 20, 4, 44, 11, 26, 3, 55, 14, 32, 2, 66, 17, 38, 1, 77, 20, 44, 0, 88, 23, 50, -1, 99, 26, 56, -2, 110, 29, 62, -3, 121, 32, 68, -4, 132, 35, 74, -5, 143, 38, 80, -6, 154, 41, 86, -7, 165, 44, 92, -8, 176, 47, 98, -9, 187, 50, 104, -10, 198, 53, 110, -11, 209, 56, 116, -12, 220, 59, 122, -13, 231, 62, 128, -14, 242, 65, 134, -15, 253, 68, 140, -16, 264, 71, 146, -17, 275, 74, 152, -18, 286, 77, 158, -19, 297, 80, 164, -20, 308, 83, 170, -21, 319, 86, 176, -22, 330, 89]**
\*\*\*
Aha! Die Formel scheint zu stimmen …
Falls sich jemand mit Python auskennt, kann er mir erklären, warum
print(n for n in range(2051993L, 2051993L+4))
hier nicht funktioniert hat.
Gruß