aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-172/james-smith/README.md37
-rw-r--r--challenge-172/james-smith/perl/ch-2.pl13
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
];
}