Annäherung an ein Soll mit 2 Werten - Problem Ausgabe
Verfasst: Donnerstag 25. August 2022, 15:01
Hallo,
leider komme ich an einem Punkt in meiner Programmierung nicht weiter.
Ziel ist es aus 8 gewogenen Werten zu ermitteln welche Kombination an den Sollwert (hier K) am nächsten ran kommt.
Das habe ich bereits mit itertools und combinations gelöst, aber nun werden nur die Werte ausgegeben welche die nächsten sind.
Ich brauche aber das Ergebnis, welche Kombination von Waagen es ist.
Kann mir vielleicht jemand auf die Sprünge helfen?
leider komme ich an einem Punkt in meiner Programmierung nicht weiter.
Ziel ist es aus 8 gewogenen Werten zu ermitteln welche Kombination an den Sollwert (hier K) am nächsten ran kommt.
Das habe ich bereits mit itertools und combinations gelöst, aber nun werden nur die Werte ausgegeben welche die nächsten sind.
Ich brauche aber das Ergebnis, welche Kombination von Waagen es ist.
Kann mir vielleicht jemand auf die Sprünge helfen?
Code: Alles auswählen
from itertools import combinations
class waageclass:
first = 0
second = 0
def __init__(self, f, s):
self.first = f
self.second = s
def zeigename(self):
print("Waagenbezeichnung = " + (self.first))
def zeigegewicht(self):
print("Gewicht der Waage = " + str(self.second))
gewicht_waage1 = 10
gewicht_waage2 = 15
gewicht_waage3 = 15
gewicht_waage4 = 20
gewicht_waage5 = 20
gewicht_waage6 = 18
gewicht_waage7 = 25
gewicht_waage8 = 30
waage1 = waageclass('Waage1',gewicht_waage1)
waage2 = waageclass('Waage2',gewicht_waage2)
waage3 = waageclass('Waage3',gewicht_waage3)
waage4 = waageclass('Waage4',gewicht_waage4)
waage5 = waageclass('Waage5',gewicht_waage5)
waage6 = waageclass('Waage6',gewicht_waage6)
waage7 = waageclass('Waage7',gewicht_waage7)
waage8 = waageclass('Waage8',gewicht_waage8)
#waage1.zeigename()
gewichte=(waage1.second,waage2.second,waage3.second,waage4.second,waage5.second,waage6.second,waage7.second,waage8.second)
# printing original list
print("The original list is : " + str(gewichte))
# Initializing K
K = 48
# Closest Sum Pair in List
# using dictionary comprehension + max()
res = {}
for ele in combinations(gewichte, 2):
ele_sum = sum(ele)
try:
res[ele_sum].append(ele)
except KeyError:
res[ele_sum] = [ele]
res = res[min(res, key=lambda ele: abs(ele - K))]
# printing result
print("The closest sum pair is : " + str(res))