
def kombiniere_schalungen(breite, hoehe, schalungen):
def rekursive_suche(b, h, kombination):
if b == 0 and h == 0:
return [kombination]
if b < 0 or h < 0:
return []
kombinationen = []
for schalung, (schalung_breite, schalung_hoehe) in schalungen.items():
neue_kombination = kombination.copy()
temp_b, temp_h = b, h
# Versuche die Schalung so oft wie möglich zu verwenden, bis sie die Höhe oder Breite überschreitet
while temp_b >= schalung_breite and temp_h >= schalung_hoehe:
temp_b -= schalung_breite
temp_h -= schalung_hoehe
neue_kombination[schalung] = neue_kombination.get(schalung, 0) + 1
kombinationen.extend(rekursive_suche(temp_b, temp_h, neue_kombination))
return kombinationen
return rekursive_suche(breite, hoehe, {})
schalungen = {
'T1': (2.5, 3.5),
'T2': (1.25, 3.5),
'T3': (1.0, 3.5),
'T4': (0.75, 3.5),
'T5': (0.5, 3.5),
'T6': (0.25, 3.5),
'T7': (2.5, 3.0),
'T8': (1.25, 3.0),
'T9': (1.0, 3.0),
'T10': (0.75, 3.0),
'T11': (0.5, 3.0),
'T12': (0.25, 3.0),
'T13': (2.5, 1.25),
'T14': (1.25, 1.25),
'T15': (1.0, 1.25),
'T16': (0.75, 1.25),
'T17': (0.5, 1.25),
'T18': (0.25, 1.25),
'T19': (2.5, 1.0),
'T20': (1.25, 1.0),
'T21': (2.5, 0.75),
'T22': (1.25, 0.75),
'T23': (2.5, 0.5),
'T24': (1.25, 0.5),
'T25': (2.5, 0.25),
'T26': (1.25, 0.25)
}
if __name__ == '__main__':
breite = float(input("Bitte geben Sie die Breite der Wand in Metern ein: "))
hoehe = float(input("Bitte geben Sie die Höhe der Wand in Metern ein: "))
kombinationen = kombiniere_schalungen(breite, hoehe, schalungen)
if not kombinationen:
print("Es gibt keine mögliche Kombination von Schalungen für diese Wandgröße.")
exit()
# Sortieren Sie die Kombinationen nach der Anzahl der Schalungsteile
beste_kombinationen = sorted(kombinationen, key=lambda x: sum(x.values()))
for idx, kombination in enumerate(beste_kombinationen[:3], 1): # Die ersten 3 Kombinationen
print(f"\nMöglichkeit {idx}:")
for schalung, anzahl in kombination.items():
print(f"Schalung: {schalung}, Anzahl: {anzahl}")