Seite 1 von 1

Problem mit Algorithmierung eines Zahlenproblems

Verfasst: Freitag 23. November 2018, 10:05
von tommy_45
Hallo,

ich habe folgendes Problem ich habe 24 Zahlen von 1 bis 1000 und soll 10 Zahlen bestimmen, die diesen 24 Zahlen insgesamt am nächsten liegen. Ich weiß, ein bissel unverständlich, aber hier mal ein Beispiel mit nur 3 Zahlen und 2 bestimmten Zahlen:

Gegeben sind die Zahlen 3, 5, 700 --> ermittelte Zahlen: 4, 700 --> So ist die Differenz der drei Zahlen zu den ermittelten Zahlen möglichst gering, nämlich: 0 + 1 + 1 = 2

Die zwei Zahlen 4, 700 habe ich ermittelt, indem ich die zwei Zahlen gesucht habe, die sich einander am nächsten sind, also 3 und 5. Davon habe ich den Durchschnitt gebildet und als zweite Zahl die 700 gewählt.

Wie könnte ich dieses "Verfahren" auf oben geschildertes Problem übertragen und so einen Algorithmus entwickeln?
Hat jemand eine Idee?

Vielen Dank im Voraus

LG tommy_45

Re: Problem mit Algorithmierung eines Zahlenproblems

Verfasst: Freitag 23. November 2018, 10:36
von Sirius3
Versuche zuerst das "Verfahren" so umzuformulieren, dass es zuerst auf mehr als 3 gegebene Zahlen und im zweiten Schritt auch auf mehr als zwei gesuchte Zahlen erweiterbar ist.

Re: Problem mit Algorithmierung eines Zahlenproblems

Verfasst: Freitag 23. November 2018, 10:46
von tommy_45
Mehr als 3 gegebene Zahlen:
Die Liste der gegebenen Zahlen der Größe nach sortieren?
Aber wie ermittle ich dann erstmal die zwei Zahlen? Ich muss ja dann prüfen, welche Zahl am weitesten von allen anderen entfernt ist..

Re: Problem mit Algorithmierung eines Zahlenproblems

Verfasst: Freitag 23. November 2018, 10:57
von Sirius3
@tommy_45: und hier kommt das Programmieren ins Spiel. Du mußt gar nicht zwei Zahlen ermitteln, sondern nur für eine gegebene Gruppeneinteilung die idealen Zahlen berechnen und den Abstand ermitteln. Wenn Du dann alle möglichen Gruppen durchprobierst, kannst Du diejenige finden, die den kleinsten Abstand hat.

Re: Problem mit Algorithmierung eines Zahlenproblems

Verfasst: Freitag 23. November 2018, 11:22
von tommy_45
Sry, das verstehe ich jetzt nicht. ;-( Was meinst du mit Gruppeneinteilung? Und wie dann die idealen Zahlen ermitteln?

Re: Problem mit Algorithmierung eines Zahlenproblems

Verfasst: Freitag 23. November 2018, 12:08
von Sirius3
Du willst doch immer eine bestimmte Anzahl an Zahlen zu einer Gruppe zusammen nehmen, um für diese eine Ergebniszahl zu berechnen. Bei zwei Ausgabezahlen sind das dann zwei Gruppen, die ersten n Zahlen in die eine, der Rest in die andere. Und wenn Du nicht weißt, wie viele Zahlen in einer Gruppe am besten sind, dann probierst Du eben alle durch.

Re: Problem mit Algorithmierung eines Zahlenproblems

Verfasst: Freitag 23. November 2018, 12:30
von tommy_45
Ah, jetzt verstehe ich. Bloß wie kann ich dafür ein Programm entwickeln? Hättest du einen bestimmten Lösungsansatz?

Re: Problem mit Algorithmierung eines Zahlenproblems

Verfasst: Freitag 23. November 2018, 13:12
von Sirius3
Hätte ich, aber wie sehen Deine Überlegungen dazu aus?

Re: Problem mit Algorithmierung eines Zahlenproblems

Verfasst: Freitag 23. November 2018, 13:27
von tommy_45
Naja, ich denke, man hat am Anfang eine Liste mit den gegebenen Zahlen und dann erstellt man mit einer for- oder while-Schleife alle möglichen Gruppenkombinationen und speichert diese (jeweils 2) Kombis in Listen und diese zwei Listen in einem Dictionary ab. Anschließend berechne ich die Differenzen, addiere sie und speichere sie im jeweiligen Dictionary:

Code: Alles auswählen

moeglichkeit_1 = {'group_1': [3, 5], 'group_2': [700], 'sum': 2}
und so weiter...
Dann lese ich mit einer for-Schleife aus, wo 'sum' am kleinsten ist und küre dieses Dictionary zum "Sieger" :-)

Bloß wie sieht die for-Schleife aus?

Re: Problem mit Algorithmierung eines Zahlenproblems

Verfasst: Freitag 23. November 2018, 13:37
von Sirius3
@tommy_45: bei nur zwei gesuchten Zahlen ist die for-Schleife doch einfach, n von 1 bis N-1.

Re: Problem mit Algorithmierung eines Zahlenproblems

Verfasst: Freitag 23. November 2018, 13:41
von tommy_45

Code: Alles auswählen

len = len(numbers)
for n in range(1, len-1):
	pass
so hier?

Re: Problem mit Algorithmierung eines Zahlenproblems

Verfasst: Samstag 24. November 2018, 11:40
von Sirius3
das wär' schon mal ein Anfang. Du solltest aber die Funktion `len` nicht mit der Variable `len` überschreiben.

Re: Problem mit Algorithmierung eines Zahlenproblems

Verfasst: Samstag 24. November 2018, 12:06
von tommy_45
Sirius3 hat geschrieben: Samstag 24. November 2018, 11:40 das wär' schon mal ein Anfang. Du solltest aber die Funktion `len` nicht mit der Variable `len` überschreiben.
Ja, das ist mir nach dem Posten auch aufgefallen..

Wie komme ich dann weiter? - hab keine Idee :(

Re: Problem mit Algorithmierung eines Zahlenproblems

Verfasst: Samstag 24. November 2018, 12:38
von Sirius3
Wo kommst Du denn nicht weiter. Du hast den nächsten Schritt doch schon selbst geschrieben: »man hat am Anfang eine Liste mit den gegebenen Zahlen und dann erstellt man mit einer for- oder while-Schleife alle möglichen Gruppenkombinationen«.

Re: Problem mit Algorithmierung eines Zahlenproblems

Verfasst: Samstag 24. November 2018, 12:59
von tommy_45
Naja, ich hab keine Ahnung, wie man jetzt alle möglichen Gruppenkombinationen erstellt. Natürlich auch mit for-Schleifen - aber wie?

Re: Problem mit Algorithmierung eines Zahlenproblems

Verfasst: Samstag 24. November 2018, 13:24
von Sirius3
nein, mit Indexzugriff.

Re: Problem mit Algorithmierung eines Zahlenproblems

Verfasst: Samstag 24. November 2018, 14:20
von tommy_45
..., den ich in eine for-Schleife packen muss, oder?

Re: Problem mit Algorithmierung eines Zahlenproblems

Verfasst: Samstag 24. November 2018, 14:29
von Sirius3
Probier's doch einfach aus.