Ruby なら、重複有り/無しの繰り返しは、

p ( 0..4 ).each_cons( 3 ).to_a
#=> [ [0, 1, 2], [1, 2, 3], [2, 3, 4] ]

p ( 1..8 ).each_slice( 3 ).to_a
#=> [ [1, 2, 3], [4, 5, 6], [7, 8] ]