in reply to Re^2: Switch the odd/even elements of an array
in thread Switch the odd/even elements of an array
Expanding the solution to allow for reversing groups of multiple elements.
use strict; use warnings; use feature qw{ say }; use List::Util qw{ min }; my @arr = ( 1 .. 9 ); say qq{@arr}; my @twos = reverseGroupsOf( 2, @arr ); say qq{@twos}; my @threes = reverseGroupsOf( 3, @arr ); say qq{@threes}; my @fours = reverseGroupsOf( 4, @arr ); say qq{@fours}; sub reverseGroupsOf { my $groupsOf = shift; my $rcReverse; $rcReverse = sub { reverse( map shift, 1 .. min scalar( @_, $groupsOf ), @_ ? &$rcReverse : (); }; &$rcReverse; }
1 2 3 4 5 6 7 8 9 2 1 4 3 6 5 8 7 9 3 2 1 6 5 4 9 8 7 4 3 2 1 8 7 6 5 9
I hope this is of interest.
Cheers,
JohnGG
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Switch the odd/even elements of an array
by wind (Priest) on Mar 06, 2011 at 05:00 UTC | |
by johngg (Canon) on Mar 06, 2011 at 17:37 UTC |