From: Rick DeNatale Date: 2006-10-21T01:13:26+09:00 Subject: Re: How to the output in 12x8 format On 10/19/06, Tim Pease wrote: > On 10/19/06, Li Chen wrote: > > Hi folks, > > > > I have an array containing 96 elements. I want to print the array in > > 12x8 format. Any comments? > > > > Thanks in advance, > > > > Li > > require 'enumerator' > > ary = (1..96).to_a > ary.each_slice(8) {|slice| puts slice.inspect} > > [1, 2, 3, 4, 5, 6, 7, 8] > [9, 10, 11, 12, 13, 14, 15, 16] > [17, 18, 19, 20, 21, 22, 23, 24] > [25, 26, 27, 28, 29, 30, 31, 32] > [33, 34, 35, 36, 37, 38, 39, 40] > [41, 42, 43, 44, 45, 46, 47, 48] > [49, 50, 51, 52, 53, 54, 55, 56] > [57, 58, 59, 60, 61, 62, 63, 64] > [65, 66, 67, 68, 69, 70, 71, 72] > [73, 74, 75, 76, 77, 78, 79, 80] > [81, 82, 83, 84, 85, 86, 87, 88] > [89, 90, 91, 92, 93, 94, 95, 96] Or as an alternative: ary = (1..8).to_a (0..7).each {|i| p ary[i*8, 8] } One advantage of Tim's suggestion of using each_slice is that the data doesn't really need to be an array, it can be another class which mixes in Enumerable. require 'enumerator' not_really_array = (1..96) not_really_array.each_slice(8) { |slice| p slice } [1, 2, 3, 4, 5, 6, 7, 8] [9, 10, 11, 12, 13, 14, 15, 16] [17, 18, 19, 20, 21, 22, 23, 24] [25, 26, 27, 28, 29, 30, 31, 32] [33, 34, 35, 36, 37, 38, 39, 40] [41, 42, 43, 44, 45, 46, 47, 48] [49, 50, 51, 52, 53, 54, 55, 56] [57, 58, 59, 60, 61, 62, 63, 64] [65, 66, 67, 68, 69, 70, 71, 72] [73, 74, 75, 76, 77, 78, 79, 80] [81, 82, 83, 84, 85, 86, 87, 88] [89, 90, 91, 92, 93, 94, 95, 96] -- Rick DeNatale My blog on Ruby http://talklikeaduck.denhaven2.com/