Seite 1 von 1

Zahlenfeld mit nicht konstantem Abstand

Verfasst: Freitag 16. Oktober 2009, 07:32
von Carsten1983
Hallo allerseits,

ich suche eine Möglichkeit ein Feld zu erzeugen, wo ich einen Startwert, einen Endwert einen Anfangsabstand der aufeinanderfolgenden Zahlen und einen Endabstand der Einträge vorgeben kann.

Ich habe gerade ein wenig in numpy gestöbert, habe aber nix gefunden. Kennt sich jemand besser aus und weiß vielleicht ob es da was vorgefertigtes gibt?

Re: Zahlenfeld mit nicht konstantem Abstand

Verfasst: Freitag 16. Oktober 2009, 07:40
von numerix
Carsten1983 hat geschrieben:ich suche eine Möglichkeit ein Feld zu erzeugen, wo ich einen Startwert, einen Endwert einen Anfangsabstand der aufeinanderfolgenden Zahlen und einen Endabstand der Einträge vorgeben kann.
:?: - Kannst du mal ein Beispiel geben?

Verfasst: Freitag 16. Oktober 2009, 08:02
von Carsten1983
Klar :-)

Code: Alles auswählen

Startwert = 0, Endwert = 100, Anfangsabstand = 1, Endabstand = 10.

[0, 1, ..., 90, 100] 
Es soll also der Abstand des ersten zum zweiten Eintrages gleich 1/10 des Abstandes vom vorletztem zum letzten Eintrag sein. Der Abstand der Einträge zwischen diesen beiden Grenzen soll permanent anwachsen.
Ich hoffe das war durchschaubar :-)

Verfasst: Freitag 16. Oktober 2009, 08:25
von numerix
Also mit "Feld" meinst du offenbar eine Liste. Ok. Den Rest verstehe ich immer noch nicht. Wie würde denn deine Beispiel-Zahlenfolge weitergehen nach der 1? Und was heißt "permanent" ansteigen? Linear? Exponentiell? Würde man den Abstand z.B. in Einerschritten erhöhen, dann käme man nicht beim gewünschten Ergebnis raus:

Code: Alles auswählen

>>> ls = [0]
>>> for d in range(1,11): ls.append(ls[-1]+d)
>>> ls
[0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55]

Verfasst: Freitag 16. Oktober 2009, 08:32
von Hyperion
Ich glaube kaum, dass es da was fertiges geben wird...

... denn es sind noch zu viele Parameteter offen!

- wie vergrößert sich der Abstand? Immer um eins? Wenn ja, muss man viele Ausgangsangaben als ungültig kennzeichnen

- wie sollen die Abstände denn steigen? Linear oder progressiv?

Du solltest erst einmal einige kleine Beispiele auf dem Papier ausprobieren, dann siehst Du, was ich meine ;-)

Code: Alles auswählen

# (start, stop), (step_start, step_stop)
(1, 10), (1, 2)
->
1, 2, 3, 4, 6, 8, 10
oder
1, 2, 3, 5, 7, 9, 11


(1, 10), (1, 3)
->
progressiv:
1, 2, 3, 5, 7, 10
oder linear:
1, 2, 4, 6, 9, 12

(1, 10), (1, 5)
->
geht so gar nicht, da es keine 5 Schritte innerhalb von 10 geben kann:
1, 2, 4, 7, 11, 16
Bei 11 wäre schon Schluss (wenn man die nächst größere Zahl zulässt, sonst schon vorher)
Also da müßtest Du wohl noch ein wenig Hirnschmalz investieren ;-)

Verfasst: Freitag 16. Oktober 2009, 08:47
von numerix
Hyperion hat geschrieben:Also da müßtest Du wohl noch ein wenig Hirnschmalz investieren ;-)
So sehe ich das auch.
Das Problem dürfte weniger die Implementierung sein, sondern die Präzisierung und mathematische Aufbereitung der Problemstellung.