Переписал на Python-е:
1я версия - функция-генератор:
def anim():
for i in xrange(1, 5):
for j in xrange(1, 10):
for k in xrange(1, 50):
for l in xrange(1, 97):
total = i + j * 0.5 + k * 0.1 + l * 0.01
if (
4.999 < total < 5.001 and
i + j + k + l == 100):
yield i, j, k, l, total
#Здесь yield - аналогично suspend
#Использование:
for res in anim():
print res
2я версия - выражение-генератор:
def total(i, j, k, l):
return i + j * 0.5 + k * 0.1 + l * 0.01
anim2 = (
(i, j, k, l, total(i, j, k, l))
for i in xrange(1, 5)
for j in xrange(1, 10)
for k in xrange(1, 50)
for l in xrange(1, 97)
if 4.999 < total(i, j, k, l) < 5.001 and
i + j + k + l == 100
)
for res in anim2:
print res
В обоих случаях вычисление очередного элемента производиться только
тогда, когда он потребуется.