//src: http://blog.bloidonia.com/post/18073244930/whats-new-in-groovy-1-8-6-the-collate-method
//v1.8.6+//
def list = 1..10
def listInFours = list.collate( 4 )
assert listInFours == [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 9, 10 ] ]
def listInFours2 = list.collate( 4, false )
// Notice the [ 9, 10 ] remainder has been dropped
assert listInFours2 == [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ] ]
def gridList = list.collate( 3 ).collate( 2 )
assert gridList == [ [ [1, 2, 3], [4, 5, 6] ],
[ [7, 8, 9], [10] ] ]
def mph = [ 10, 26, 30, 32, 27, 14, 19, 22, 40, 14 ]
def window = mph.collate( 3, 1, false )
assert window == [ [10, 26, 30],
[26, 30, 32],
[30, 32, 27],
[32, 27, 14],
[27, 14, 19],
[14, 19, 22],
[19, 22, 40],
[22, 40, 14] ]
def windowAvg = window*.sum()*.intdiv( 3 )
assert windowAvg == [22, 29, 29, 24, 20, 18, 27, 25]
def items = [ 'ham', 30, 'cheese', 20, 'steak', 95 ]
def itemMap = items.collate( 2 ).collectEntries()
assert itemMap == [ ham:30, cheese:20, steak:95 ]
def range = 1..20
def (odds,evens) = range.collate( 2 ).transpose()
assert odds == (1..19).step( 2 ) // odd numbers 1 - 19
assert evens == (2..20).step( 2 ) // even numbers 2 - 20
Wednesday, February 29, 2012
collate
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment