e.lazy â lazy_enumerator
Instance Public methods
Returns a lazy enumerator, whose methods map/collect, flat_map/collect_concat, select/find_all, reject, grep, zip, take, #take_while, drop, and #drop_while enumerate values only on an as-needed basis. However, if a block is given to zip, values are enumerated immediately.
Example
The following program finds pythagorean triples:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | def pythagorean_triples ( 1 ..Float:: INFINITY ).lazy.flat_map {|z| ( 1 ..z).flat_map {|x| (x..z).select {|y| x** 2 + y** 2 == z** 2 }.map {|y| [x, y, z] } } } end # show first ten pythagorean triples p pythagorean_triples.take( 10 ).force # take is lazy, so force is needed p pythagorean_triples.first( 10 ) # first is eager # show pythagorean triples less than 100 p pythagorean_triples.take_while { |*, z| z < 100 }.force |
Please login to continue.