http://qs321.pair.com?node_id=665254


in reply to Golf/Perlish solution to this problem?

I sorta like:

use strict; use warnings; my @array = (1 .. 8); my @other; while (@array) { push @other, @array[-1, 0, 1, -2]; splice @array, 0, 2; splice @array, -2, 2; } print "@other";

but it'd be nice to clean up the splices in some fashion. Of course if you don't want to destroy the original array you could:

use strict; use warnings; my @array = (1 .. 8); my @other; push @other, @array[-$_ * 2 - 1, $_ * 2, $_ * 2 + 1, -$_ * 2 -2] for 0 .. $#array / 4; print "@other";

Perl is environmentally friendly - it saves trees