diff options
| author | drbaggy <js5@sanger.ac.uk> | 2022-07-06 02:15:50 +0100 |
|---|---|---|
| committer | drbaggy <js5@sanger.ac.uk> | 2022-07-06 02:15:50 +0100 |
| commit | 22eb11d6f37d91f264267895f633ce53c1d5babf (patch) | |
| tree | a3a9dc290bc30d61a05e893d30a3912c120c9880 | |
| parent | 8a2be80b1dbbf239cf524ed56f7578f2fb91f732 (diff) | |
| download | perlweeklychallenge-club-22eb11d6f37d91f264267895f633ce53c1d5babf.tar.gz perlweeklychallenge-club-22eb11d6f37d91f264267895f633ce53c1d5babf.tar.bz2 perlweeklychallenge-club-22eb11d6f37d91f264267895f633ce53c1d5babf.zip | |
tidying up and using $#_ for n-1 size of parameter array
| -rw-r--r-- | challenge-172/james-smith/README.md | 37 | ||||
| -rw-r--r-- | challenge-172/james-smith/perl/ch-2.pl | 13 |
2 files changed, 28 insertions, 22 deletions
diff --git a/challenge-172/james-smith/README.md b/challenge-172/james-smith/README.md index 7d1e63731f..34c223f1e5 100644 --- a/challenge-172/james-smith/README.md +++ b/challenge-172/james-smith/README.md @@ -83,27 +83,29 @@ These each take a similar form. * We then compute the value for that index ```perl sub fivenum_avg { - my @sort = sort { $a <=> $b } @_; # sort values + my @sort = sort { $a <=> $b } @_; # sort values [ - map { $_->[1] # If lies between 2 points - ? ( 1 - $_->[1] ) * $sort[ $_->[0] ] + # compute weighted average + map { $_->[1] # If lies between 2 points + ? ( 1 - $_->[1] ) * $sort[ $_->[0] ] + # compute weighted average $_->[1] * $sort[ $_->[0] + 1 ] - : $sort[ $_->[0] ] # o/w return value + : $sort[ $_->[0] ] # o/w return value } - map { [ int $_, $_ - int $_ ] } # get LH-index, and distance of point from this - map { $_/4*(@_-1) } 0..4 # calculate index + map { [ int $_, $_ - int $_ ] } # get LH-index, and distance of point from this + map { $_/4*$#_ } # calculate index + 0 .. 4 ]; } sub fivenum_mid { - my @sort = sort { $a <=> $b } @_; # sort values + my @sort = sort { $a <=> $b } @_; # sort values [ - map { $_->[1] # If lies between 2 points - ? ($sort[$_->[0]] + $sort[$_->[0]+1])/2 # compute average - : $sort[$_->[0]] # o/w return value + map { $_->[1] # If lies between 2 points + ? ($sort[$_->[0]] + $sort[$_->[0]+1])/2 # compute average + : $sort[$_->[0]] # o/w return value } - map { [ int $_, ($_ == int $_) ? 0 : 1 ] } # get LH-index {and flag if point lies between 2 numbers - map { $_/4*(@_-1) } 0..4 # calculate index + map { [ int $_, ($_ == int $_) ? 0 : 1 ] } # get LH-index {and flag if point lies between 2 numbers} + map { $_/4*$#_ } # calculate index + 0 .. 4 ]; } @@ -111,11 +113,12 @@ sub fivenum_range { my @sort = sort { $a <=> $b } @_; # sort values [ map { $_->[1] && $sort[$_->[0]] != $sort[$_->[0]+1] # If lies between 2 points - ? '<'.$sort[$_->[0]].'-'.$sort[$_->[0]+1].'>' # return "range" - : $sort[$_->[0]] # o/w return value - } - map { [ int $_, ($_ == int $_) ? 0 : 1 ] } # get LH-index {and flag if point lies between 2 numbers - map { $_/4*(@_-1) } 0..4 # calculate index + ? '<'.$sort[$_->[0]].'-'.$sort[$_->[0]+1].'>' # return "range" + : $sort[$_->[0]] # o/w return value + } + map { [ int $_, ($_ == int $_) ? 0 : 1 ] } # get LH-index {and flag if point lies between 2 numbers} + map { $_/4*$#_ } # calculate index + 0 .. 4 ]; } ``` diff --git a/challenge-172/james-smith/perl/ch-2.pl b/challenge-172/james-smith/perl/ch-2.pl index ba7d0f1dbd..1dd5b16c7a 100644 --- a/challenge-172/james-smith/perl/ch-2.pl +++ b/challenge-172/james-smith/perl/ch-2.pl @@ -36,7 +36,8 @@ sub fivenum_avg { : $sort[ $_->[0] ] } map { [ int $_, $_ - int $_ ] } - map { $_/4*(@_-1) } 0..4 + map { $_/4*$#_ } + 0 .. 4 ]; } @@ -51,7 +52,8 @@ sub fivenum_mid { : $sort[ $_->[0] ] } map { [ int $_, ($_ == int $_) ? 0 : 1 ] } - map { $_/4*(@_-1) } 0..4 + map { $_/4*$#_ } + 0 .. 4 ]; } @@ -61,10 +63,11 @@ sub fivenum_range { my @sort = sort { $a <=> $b } @_; [ map { $_->[1] && $sort[$_->[0]]!=$sort[$_->[0]+1] - ? '<'.$sort[$_->[0]].'-'.$sort[$_->[0]+1].'>' - : $sort[$_->[0]] } + ? '<'.$sort[$_->[0]].'-'.$sort[$_->[0]+1].'>' + : $sort[$_->[0]] } map { [ int $_, ($_ == int $_) ? 0 : 1 ] } - map { $_/4*(@_-1) } 0..4 + map { $_/4*$#_ } + 0 .. 4 ]; } |
