diff options
| author | Ruben Westerberg <drclaw@mac.com> | 2019-05-26 17:01:18 +1000 |
|---|---|---|
| committer | Ruben Westerberg <drclaw@mac.com> | 2019-05-26 17:01:18 +1000 |
| commit | ac8aafccc1ec148e0673e58b05d0e67a9b4ef9db (patch) | |
| tree | f4e140ecd505224e23799cd7f8ca1918bfbe83bd /challenge-009 | |
| parent | f99e141b646c9a9d3ff7b03685f38fa19de44d2a (diff) | |
| download | perlweeklychallenge-club-ac8aafccc1ec148e0673e58b05d0e67a9b4ef9db.tar.gz perlweeklychallenge-club-ac8aafccc1ec148e0673e58b05d0e67a9b4ef9db.tar.bz2 perlweeklychallenge-club-ac8aafccc1ec148e0673e58b05d0e67a9b4ef9db.zip | |
Complete solutions and prettier output for ch-2
Diffstat (limited to 'challenge-009')
| -rw-r--r-- | challenge-009/ruben-westerberg/README | 6 | ||||
| -rwxr-xr-x | challenge-009/ruben-westerberg/perl5/ch-2.pl | 45 | ||||
| -rwxr-xr-x | challenge-009/ruben-westerberg/perl6/bug.p6 | 18 | ||||
| -rwxr-xr-x | challenge-009/ruben-westerberg/perl6/ch-2.p6 | 27 |
4 files changed, 73 insertions, 23 deletions
diff --git a/challenge-009/ruben-westerberg/README b/challenge-009/ruben-westerberg/README index cdf9befd14..8ac9e1ff34 100644 --- a/challenge-009/ruben-westerberg/README +++ b/challenge-009/ruben-westerberg/README @@ -1,8 +1,8 @@ Solution by Ruben Westerberg ch-1.pl and ch-1.p6 -Simply run the program to generate perfect numbers +Simply run the programs ch-2.pl and ch-2.p6 -Run the program and type in lines. When finished press CTRL-D to finish input. -Centered lines will we output +When running the programs provide a space separeated list of numbers to rank. Input is sorted in assending order before ranking +If no command line arguments are specifed then a default list is used diff --git a/challenge-009/ruben-westerberg/perl5/ch-2.pl b/challenge-009/ruben-westerberg/perl5/ch-2.pl new file mode 100755 index 0000000000..4cbd06e2a2 --- /dev/null +++ b/challenge-009/ruben-westerberg/perl5/ch-2.pl @@ -0,0 +1,45 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use v5.26; + + +my @inputs=@ARGV > 0 ? @ARGV : (10,20,20,51); +@inputs =sort @inputs; + +sub rank1224 { + my $ref=sub {map { + state $prev=$_; + state $count=0; + $count= ($prev != $$_[1])? 1: $count +1; + $prev=$$_[1]; + $$_[0]+2-$count; + } + + (map {state $i;[$i++,$_]} @_); + }; + &$ref(@_); +} + +sub rank1334 { + my @r=rank1224(reverse @_); + map {@r+1 - $_} reverse @r; +} + +sub rank1223 { + map { + state $prev=$_; + state $r=1; + $r= ($prev != $_) ? $r+1: $r; + $prev=$_; + $r; + + } @_; +} +print "Inputs: ",join " ",@inputs; +print "\n"; +print "1224 Ranking: ",join ' ', rank1224(@inputs); +print "\n"; +print "1334 Ranking: ",join ' ', rank1334(@inputs); +print "\n"; +print "1223 Ranking: ", join ' ', rank1223(@inputs); diff --git a/challenge-009/ruben-westerberg/perl6/bug.p6 b/challenge-009/ruben-westerberg/perl6/bug.p6 index 85b4f6ff94..0cf1dcd8fa 100755 --- a/challenge-009/ruben-westerberg/perl6/bug.p6 +++ b/challenge-009/ruben-westerberg/perl6/bug.p6 @@ -6,8 +6,18 @@ say do for @inputs { NEXT { $prev=$_}; $r= ($prev !== $_) ?? $r+1 !! $r; say $r; - $r; + $r+0; # THIS IS REQUIRED for some reason }; -say (for @inputs { - $_*2; -}); + +sub bug (@vals) { + @vals.map: { + state $prev=$_; + state $r=1; + NEXT { $prev=$_}; + $r= ($prev !== $_) ?? $r+1 !! $r; + say $r; + $r; + }; +} + +say bug(@inputs); diff --git a/challenge-009/ruben-westerberg/perl6/ch-2.p6 b/challenge-009/ruben-westerberg/perl6/ch-2.p6 index 3c82c0ad59..e76f6a672a 100755 --- a/challenge-009/ruben-westerberg/perl6/ch-2.p6 +++ b/challenge-009/ruben-westerberg/perl6/ch-2.p6 @@ -1,19 +1,16 @@ #!/usr/bin/env perl6 my @inputs=@*ARGS>0??@*ARGS!![10,20,20,51]; - +@inputs.=sort; sub rank1224 (@inputs) { #my @d=reverse sort input; my @r=(for @inputs.kv { - state $prev=-1; - state $count=1; + state $prev=$^v; + state $count=0; + NEXT {$prev=$v}; $count= $prev !== $^v ?? 1!! $count+1; - $prev=$v; - $^k; - $k+2-$count; + $^k+2-$count; }); - #@r.elems +1 <<-<< @r.reverse - } sub rank1334 (@inputs) { my @d=reverse @inputs; @@ -22,16 +19,14 @@ sub rank1334 (@inputs) { } sub rank1223 (@input) { - @input.map({ + @input.map: { state $prev=$_; state $r=1; NEXT { $prev=$_}; $r= ($prev !== $_) ?? $r+1 !! $r; - #say $r; - $r; - }); + }; } - -say rank1224(@inputs); -say rank1334(@inputs); -say rank1223(@inputs); +say "Inputs: "~@inputs; +say "1224 Ranking: "~rank1224(@inputs); +say "1334 Ranking: "~rank1334(@inputs); +say "1223 Ranking: "~rank1223(@inputs); |
