Schalungsmöglichkeiten

Du hast eine Idee für ein Projekt?
Antworten
dark_61
User
Beiträge: 1
Registriert: Dienstag 24. Oktober 2023, 10:44

Ich möchte einen Skript schreiben, womit ich zum Beispiel für eine bestimmte Wand von zum Beispiel 5 Meter Breite und einer Höhe von 2 Meter, die besten Schalungsmöglichkeiten bekomme, was in diesem Fall vier mal die Schalung T19 wäre. Jedoch sagt mir der Code, dass nur zwei T19 Schalungen benötigt wird. Deswegen wollte ich fragen, woran der Fehler liegen würde. Ich bedanke mich schonmal im voraus :)

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}")
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@dark_61: Vollzieh das doch einfach mal mit Papier und Stift nach was das Programm da macht und wo das dann offensichtlich falsch ist was gemacht wird. Wenn Du nur T19 berücksichtigst, ist das ja schnell durchgespielt.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten