( my $i = $#a ) > 0 or die;
$b[ $i ] = $a[ $i ] + $a[ --$i ] while $i;
Never do in a loop, what can be done outside of it.
Wouldn't your version fail for an array with one element?
With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
In the absence of evidence, opinion is indistinguishable from prejudice.
Suck that fhit
| [reply] [Watch: Dir/Any] [d/l] |
Never do in a loop, what can be done outside of it.
I agree, and that's why I like, in particular, the for-loop and, less so, map (and let's just pass over the grep) versions that iterate over ranges of 1 .. $#array or 0 .. $#array-1 and so will never enter the loop. (Again, I haven't actually tested all the preceding code in this thread, only stared at it, but it looks ok.)
Wouldn't your version fail for an array with one element?
That depends on the meaning of "fail."
c:\@Work\Perl\monks>perl -wMstrict -MData::Dump -le
"my @ra = (1);
my $i = $#ra;
;;
my @rb;
$rb[ $i ] = $ra[ $i ] + $ra[ --$i ] while $i > 0;
dd \@rb
"
[]
But maybe an operation that iterates pairwise over an array with less than a pair of elements should throw an exception or at least issue a warning. Who can say? Only the Great Specificator above.
Give a man a fish: <%-{-{-{-<
| [reply] [Watch: Dir/Any] [d/l] [select] |
I agree, and that's why I like, in particular, the for-loop and, less so, map (and let's just pass over the grep) versions that iterate over ranges of 1 .. $#array or 0 .. $#array-1 and so will never enter the loop
The problem with the map/grep and postfix for is that they generate a list as big as the array.
Small lists: meh! But for big lists -- where big frequently is in the 100s of millions on my machine and billions on client/AWS X1 instances -- those lists cost big time.
Postfix while and until avoid that whilst still giving clean, concise code. Combined with each, its good for big hashes also.
With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
In the absence of evidence, opinion is indistinguishable from prejudice.
Suck that fhit
| [reply] [Watch: Dir/Any] |