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
Problem mit Algorithmierung eines Zahlenproblems
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..
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..
@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.
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.
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:
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?
Code: Alles auswählen
moeglichkeit_1 = {'group_1': [3, 5], 'group_2': [700], 'sum': 2}
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?
Code: Alles auswählen
len = len(numbers)
for n in range(1, len-1):
pass
Ja, das ist mir nach dem Posten auch aufgefallen..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.
Wie komme ich dann weiter? - hab keine Idee

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«.