42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
#Kata https://www.codewars.com/kata/5324945e2ece5e1f32000370/train/python
|
|
|
|
def sum_strings(x, y):
|
|
new_x = x[::-1]
|
|
new_y = y[::-1]
|
|
res = []
|
|
carry = 0
|
|
|
|
# Schleife
|
|
""" Mittels i über die zahlen iterieren
|
|
checken ob i bei beiden zahlen die länge hat, ansonsten mittels 0 füllen"""
|
|
for i in range(max(len(new_x), len(new_y))):
|
|
if i < len(new_x):
|
|
digit_x = int(new_x[i])
|
|
else:
|
|
digit_x = 0
|
|
if i < len(new_y):
|
|
digit_y = int(new_y[i])
|
|
else:
|
|
digit_y = 0
|
|
|
|
|
|
# Berechne die Summe
|
|
""" carry wird für zahlen grösser 10 benutzt, damit es eine Zeile weiter gehen kann"""
|
|
total = digit_x + digit_y + carry
|
|
|
|
|
|
# Berechne den neuen carry und die Ziffer für das Ergebnis
|
|
"""carry berechnen, also was ist über 10.
|
|
mittels % wird nur der rest, also das unter 10 angehängt"""
|
|
carry = total // 10
|
|
res.append(str(total%10))
|
|
|
|
# Falls carry noch vorhanden ist
|
|
"""nach berechnung von x und y und carry noch übrig ist, wird dieses der liste angehängt"""
|
|
if carry > 0:
|
|
res.append(str(carry))
|
|
|
|
"""mittels join alles zusammen hängen und die zahlen reihenfolge wieder drehen, damit sie richtig herum stehen
|
|
mittels strip werden die angehängten null herausgestirchen, falls x und y ungleich lang sind"""
|
|
final_result = "".join(res[::-1])
|
|
return final_result.lstrip('0') or '0' |