Skip to content

Instantly share code, notes, and snippets.

@nsmmrs
Created August 4, 2023 15:44
Show Gist options
  • Save nsmmrs/f67b5e9e0c48a45bc3d0656d85fc5bb0 to your computer and use it in GitHub Desktop.
Save nsmmrs/f67b5e9e0c48a45bc3d0656d85fc5bb0 to your computer and use it in GitHub Desktop.
Ruby Lazy Enumerator Demo
def lazy_demo(n, group_size:n, groups:n)
(1..Float::INFINITY)
.lazy
.map{|x| x * n }
.select{|product| product.even? }
.each_slice(group_size)
.map{|group| group.map(&:to_s).join(",") }
.first(groups)
end
@nsmmrs
Copy link
Author

nsmmrs commented Aug 4, 2023

irb> puts lazy_demo(1)
2
irb> puts lazy_demo(2)
2,4
6,8
irb> puts lazy_demo(2, group_size: 5)
2,4,6,8,10
12,14,16,18,20
irb> puts lazy_demo(3)
6,12,18
24,30,36
42,48,54
irb> puts lazy_demo(3, groups: 9)
6,12,18
24,30,36
42,48,54
60,66,72
78,84,90
96,102,108
114,120,126
132,138,144
150,156,162

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment