Ich verzweifle mal wieder an einer Aufgabe oder Projekt wie mans nimmt.
Auf jeden Fall möchte ich ein Programm schreiben welches bei Eingabe einer Liste zb [2, 0, 2] Die Zahl der Freien Blöcke innendrin ausgibt, also die man mit "Wasser füllen kann"
bei [3, 1, 3] dann auch 2, bei [4, 0, 1, 4, 2, 4] wären es 9 usw.
Auf jeden Fall habe ich jetzt nach 3 Tagen und ohne Spaß 5-6 Stunden Arbeit dieses Programm geschrieben, welches bei den einfacheren Beispielen auch funktioniert dennoch war die Lesbarkeit des Programms und generell die Länge sehr schlecht und ich hab es neu probiert. Doch das neue Programm ist zwar viel kompakter funktioniert aber auch nicht wirklich, und ich krieg es einfach nicht hin, wenn jemand mir dabei helfen könnte und auch alles erklären könnte wäre das sehr nett, hier sind die 2 Programme:
Und bedenkt bitte das ich erste seit nicht allzu langer Zeit und nur in meiner Freizeit programmiere also bitte nicht zu kompliziert machen, danke.
Code: Alles auswählen
class BricksAndWaterPython:
def how_much_water(bricks_array: list) -> int:
def calculating(bricks_array: list, element: int):
count = bricks_array.count(bricks_array[element])
if (bricks_array[element] > bricks_array[0]) and count >= 2: #größerer neuer wert
if element + 2 == length:
res = 0
return res
try:
if bricks_array[element] > bricks_array[element + 1]:
res = bricks_array[element] - bricks_array[element + 1]
print(f"res: {res}")
print("-------------------------------")
return res
else:
res = 0
print(f"res: {res}")
print("-------------------------------")
return res
except:
res = 0
print(f"res: {res}")
print("-------------------------------")
return res
else:
print("test")
try:
if bricks_array[0] >= bricks_array[element + 1]:
res = bricks_array[0] - bricks_array[element + 1]
print(f"res: {res}")
print("-------------------------------")
return res
else:
res = 0
print(f"res: {res}")
print("-------------------------------")
return res
except:
res = 0
print(f"res: {res}")
print("-------------------------------")
return res
print(f"Test 1: {bricks_array}")
#prüfen ob es freie wasserfläche gibt
bricks_array_addition = 0
length = len(bricks_array)
#liste sortieren und höchsten wert vergleichen
sorted_list = sorted(bricks_array)
highest_val = sorted_list[-1]
for nr in bricks_array: #alle elemente der liste zusammenrechnen
bricks_array_addition = bricks_array_addition + nr #////
if highest_val * len(bricks_array) != bricks_array_addition:
end_res = 0
for element in range(0, length):
print(f"element: {element}")
res = calculating(bricks_array, element)
end_res = res + end_res
return end_res
else:
return
#ganz falsch hier
print(BricksAndWaterPython.how_much_water([2, 0, 3, 0, 2]))
Code: Alles auswählen
class BricksAndWaterPython:
def how_much_water(bricks_array: list) -> int:
water = 0
length = len(bricks_array)
for i in range(1, length - 1):
print(f"i: {i}")
left_hight = bricks_array[i - 1]
right_hight = bricks_array[i + 1]
res = min(left_hight, right_hight) - bricks_array[i]
water = res + water
return water
bricks_array1 = [1, 0, 1]
bricks_array2 = [2, 0, 2]
bricks_array3 = [3, 1, 3]
bricks_array4 = [1, 1, 1]
bricks_array5 = [4, 0, 1, 4, 2, 4]
bricks_array6 = [2, 0, 3, 0, 4]
print(BricksAndWaterPython.how_much_water(bricks_array1))