in reply to "Junkyard" Puzzle: Average of Numbers
Also the stricture to avoid having any variables should not be looked at as just a bizarre restriction. People who program in a functional style often do that voluntarily. With that in mind I offer the following version that follows the restrictions as a matter of intentional style and just happens to solve a more complex problem. The function is avg_nested which extracts the numbers from a nested set of arrays of arrays and computes the average of the entire list:
sub avg { sum(@_) / @_; } sub avg_nested { avg(flatten_arrays(@_)); } sub flatten_arrays { map {ref($_) ? flatten_arrays(@$_) : $_} @_; } sub sum { @_ ? shift(@_) + sum(@_) : 0; }
UPDATE
jynx caught me. I wrote it, then changed a function
name at the last minute and didn't test properly. I
forgot to change one flatten to flatten_arrays...
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Re (tilly) 1: "Junkyard" Puzzle: Average of Numbers
by Masem (Monsignor) on May 13, 2001 at 16:10 UTC |