In 2003, I implemented the following method. It is something that comes up from time to time.
 
!SequenceableCollection publicMethods !
splitEvery: chunkSize
 "Answer a collection of sub-collections each of the specified chunk size.
  If the receiver size is not a multiple of chunkSize, the last sub-collection will be shorter."
 
 | chunks stream |
 chunkSize < 1 ifTrue: [ ^self splitEvery: 1 ].
 
 stream := ReadStream on: self.
 chunks := OrderedCollection new.
 [stream atEnd] whileFalse: [
  chunks add: (stream nextOrLess: chunkSize).
 ].
 
 ^chunks.
! !


From: Pharo-users [mailto:pharo-users-bounces@lists.pharo.org] On Behalf Of Stephane Ducasse
Sent: April 25, 2017 13:08
To: Any question about pharo is welcome
Subject: [Pharo-users] little "challenge"

#(16    17 17 16 18 17 18 19    19 19 18 19 19 20 19   20 19 20 20 20 19 20) 

-> 

{ #(17 17 16 18 17 18 19) . #(19 19 18 19 19 20 19) . #(20 19 20 20 20 19 20)}

any code?