RosettaCodeData/Task/Generator-Exponential/Lingo/generator-exponential-3.lingo

44 lines
796 B
Plaintext

property _genv
property _genf
-- @constructor
on new (me, genv, genf)
me._genv = genv
me._genf = genf
return me
end
on exec (me, input)
repeat while TRUE
me._genv.exec(input)
v = input[1]
ok = TRUE
me._genf.reset() -- reset filter generator
repeat while TRUE
me._genf.exec(input)
f = input[1]
if f>v then exit repeat
if f=v then
ok=FALSE
exit repeat
end if
end repeat
if ok then
input[1] = v
exit repeat
end if
end repeat
return TRUE
end
on skip (me, steps)
repeat with i = 1 to steps
me.exec([])
end repeat
end
on reset (me)
me._genv.reset()
me._genf.reset()
end