Rückkehr aus einer verschachtelten Schleife in Common Lisp
Ich versuche, diesen Python-Code in Common Lisp umzuwandeln:
for a in xrange(1,1000):
for b in xrange(a,1000):
c = (a**2 + b**2) ** 0.5
s = a + b + c
if s == 1000:
return a * b * c
Mein erster Versuch war:
(loop for a from 1 to 999
do (loop for b from a to 999
for c = (sqrt (+ (expt a 2) (expt b 2)))
for s = (+ a b c)
until (= s 1000)
finally return (* a b c))))
Das geht nicht. Meine Aufgabe ist: wanns
Treffer 1000 bewirken, dass der gesamte Ausdruck über return steht(* a b c)
. Wie man einen Wert von einem verschachtelten Schleifenmakro zurückgibt?