Using an array of integers as input my task is to test each integer to see if the sum of its digits is odd. The integers passing this test are to be printed out in horizontal line with a space between each integer so as to be human readable. The test must work for positive and negative integers.
I decided to put the test into a subroutine. My code appears to work. My question is whether it is optimal by the standards of the proficient Perl programmer or whether it is just a newbie hack. As an example, I have used the absolute value function abs but I could have used abs($_). Which is best? Does it matter?
my @input = ( -222, -221, -21, 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 +, 144 ); sub oddDigitSum { my @ans; for (@_) { my @digits = split //, abs; my $sum; $sum += $_ for @digits; $sum % 2 && push @ans, $_; } return @ans; } print $_, " " for oddDigitSum(@input); print “\n”;
In reply to Newbie question by oldB51
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |