edit: Es "funktioniert" jetzt. Wenn jemand tipps hat, wie es auch geht, ohne mehrere Minuten darauf zu warten, nur her damit.
Bin leider nicht ganz so fit, um selber auf solche Optimierungen zu kommen.
edit2: ok, stimmt ja, nach Lösen des Problems kann man die Lösungen der Anderen sehen. Mist... mal wieder zu früh gepostet und einen Thread umsonst erstellt, entschuldigt....
ich bräuchte mal wieder etwas Hilfe. Ich versuche jene Aufgabenstellung zu lösen:
Code: Alles auswählen
A Pythagorean triplet is a set of three natural numbers, a < b < c, for which, a*a + b*b = c*c
For example, 3*3 + 4*4 = 9 + 16 = 25 = 5*5.
There exists exactly one Pythagorean triplet for which a + b + c = 1000.
Find the product abc.
Ich habe versucht alle Bedingungen in der Aufgabe umzusetzten, aber wie gesagt, irgendwo ist ein Denkfehler oder Sonstiges.
Vielleicht kann mal jemand für mich drüber schauen:
Code: Alles auswählen
def is_pyth_triplet(a, b, c):
if not (a < b and b < c):
return False
return a*a + b*b == c*c
def main():
result = 0
a = 0
b = 0
c = 0
for i in range(1000):
for j in range(1000):
for k in range(1000):
if is_pyth_triplet(i, j, k) and a + b + c == 1000: # muss heißen i + j + k == 1000
a = i
b = j
c = k
result = a * b * c
print("Result:", a, '*', b, '*', c, '=', result)
if __name__ == "__main__":
main()
aber etwas anderes als Bruteforce fällt mir grad nicht ein. Wenn der Ansatz dann mal passt, kann ich auch mit Sachen wie all()/ any() etc. das ganze "schöner machen" oder "verbessern".
Wenn jemand in die Richtung 'Mathematischer Ansatz' Tipps hat, wäre ich auch recht dankbar.
LG
HarteWare