42 lines
684 B
Text
42 lines
684 B
Text
|
|
T Generator
|
|||
|
|
F.virtual.abstract next() -> Float
|
|||
|
|
|
|||
|
|
T PowersGenerator(Generator)
|
|||
|
|
i = 0.0
|
|||
|
|
Float e
|
|||
|
|
|
|||
|
|
F (e)
|
|||
|
|
.e = e
|
|||
|
|
|
|||
|
|
F.virtual.assign next() -> Float
|
|||
|
|
V r = .i ^ .e
|
|||
|
|
.i++
|
|||
|
|
R r
|
|||
|
|
|
|||
|
|
T Filter
|
|||
|
|
Generator gen, filter
|
|||
|
|
Float lastG, lastF
|
|||
|
|
|
|||
|
|
F (Generator gen, filter)
|
|||
|
|
.gen = gen
|
|||
|
|
.filter = filter
|
|||
|
|
.lastG = .gen.next()
|
|||
|
|
.lastF = .filter.next()
|
|||
|
|
|
|||
|
|
F ()()
|
|||
|
|
L .lastG >= .lastF
|
|||
|
|
I .lastG == .lastF
|
|||
|
|
.lastG = .gen.next()
|
|||
|
|
.lastF = .filter.next()
|
|||
|
|
|
|||
|
|
V out = .lastG
|
|||
|
|
.lastG = .gen.next()
|
|||
|
|
R out
|
|||
|
|
|
|||
|
|
V gen = Filter(PowersGenerator(2), PowersGenerator(3))
|
|||
|
|
|
|||
|
|
L 20
|
|||
|
|
gen()
|
|||
|
|
L 10
|
|||
|
|
print(gen(), end' ‘ ’)
|