diff options
| author | Stephen Lynn <bizlsg@localhost.localdomain> | 2022-12-22 22:35:13 +0800 |
|---|---|---|
| committer | Stephen Lynn <bizlsg@localhost.localdomain> | 2022-12-22 22:35:13 +0800 |
| commit | a7f67d008a98d3e51e273d087b4b79c290af3e61 (patch) | |
| tree | 19c34d120929a44a2ba3b340221f40271b2350f1 /challenge-196 | |
| parent | 49e34ffb1226c5d931cfc8366c2bafc9836cf976 (diff) | |
| download | perlweeklychallenge-club-a7f67d008a98d3e51e273d087b4b79c290af3e61.tar.gz perlweeklychallenge-club-a7f67d008a98d3e51e273d087b4b79c290af3e61.tar.bz2 perlweeklychallenge-club-a7f67d008a98d3e51e273d087b4b79c290af3e61.zip | |
pwc 196
Diffstat (limited to 'challenge-196')
| -rw-r--r-- | challenge-196/steve-g-lynn/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-196/steve-g-lynn/perl/ch-1.pl | 21 | ||||
| -rwxr-xr-x | challenge-196/steve-g-lynn/perl/ch-2.pl | 34 | ||||
| -rwxr-xr-x | challenge-196/steve-g-lynn/raku/ch-1.sh | 4 | ||||
| -rwxr-xr-x | challenge-196/steve-g-lynn/raku/ch-2.p6 | 23 |
5 files changed, 83 insertions, 0 deletions
diff --git a/challenge-196/steve-g-lynn/blog.txt b/challenge-196/steve-g-lynn/blog.txt new file mode 100644 index 0000000000..d4656f26c7 --- /dev/null +++ b/challenge-196/steve-g-lynn/blog.txt @@ -0,0 +1 @@ +https://thiujiac.blogspot.com/2022/12/pwc-196.html diff --git a/challenge-196/steve-g-lynn/perl/ch-1.pl b/challenge-196/steve-g-lynn/perl/ch-1.pl new file mode 100755 index 0000000000..eccd208d43 --- /dev/null +++ b/challenge-196/steve-g-lynn/perl/ch-1.pl @@ -0,0 +1,21 @@ +#!/usr/bin/env -S perl -wl + +use strict; +use Data::Dumper qw(Dumper); +use Algorithm::Combinatorics qw(combinations); + +print Dumper(&pattern_132([3,1,4,2])); #(1,4,2) +print Dumper(&pattern_132([1,2,3,4])); #"" +print Dumper(&pattern_132([1,3,2,4,6,5])); #(1,3,2) +print Dumper(&pattern_132([1,3,4,2])); #(1,3,2) + +sub pattern_132 { + my ($ra_list)=@_; + + ( map {@$ra_list[@$_]} + grep { ( ($$ra_list[$_->[1]]) > ($$ra_list[$_->[2]]) ) } + grep { ( ($$ra_list[$_->[2]]) > ($$ra_list[$_->[0]]) ) } + combinations([0 .. @$ra_list-1],3) ) [0 .. 2]; + +} + diff --git a/challenge-196/steve-g-lynn/perl/ch-2.pl b/challenge-196/steve-g-lynn/perl/ch-2.pl new file mode 100755 index 0000000000..2feb50ed23 --- /dev/null +++ b/challenge-196/steve-g-lynn/perl/ch-2.pl @@ -0,0 +1,34 @@ +#!/usr/bin/env -S perl -wl + +use strict; + +print &range_list(1,3,4,5,7); #([3,5]) +print &range_list(1,2,3,6,7,9); #([1,3],[6,7]) +print &range_list(0,1,2,4,5,6,8,9); #([0,2],[4,6],[8,9]) + +sub range_list { + my @arry = sort {$a <=> $b} @_; + + unshift @arry, -1_000_000; + push @arry, 1_000_000; + + my @indices = grep { + ($arry[$_]-$arry[$_-1]==1) || + ($arry[$_+1]-$arry[$_]==1) + } (1 .. @arry-2); + + &print_edges( @arry [ @indices] ); +} + +sub print_edges { + my @ranges = @_; + my $return_string = '(['. $ranges[0] . ','; + + for my $i (1 .. @ranges-1) { + ( ($ranges[$i] - $ranges[$i-1]) > 1 ) && + ($return_string .= ($ranges[$i-1] . "],[" . $ranges[$i] . ",")); + ( $i == @ranges-1 ) && + ($return_string .= ($ranges[$i] . "])")) + } + $return_string; +} diff --git a/challenge-196/steve-g-lynn/raku/ch-1.sh b/challenge-196/steve-g-lynn/raku/ch-1.sh new file mode 100755 index 0000000000..a477383c7f --- /dev/null +++ b/challenge-196/steve-g-lynn/raku/ch-1.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +raku -e 'my @list=@*ARGS; (0 .. @list-1).combinations(3).map({@list[$_]}).grep({ @_[2] > @_[0] }).grep({ @_[1] > @_[2] }).head(1).flat.say' $@ + diff --git a/challenge-196/steve-g-lynn/raku/ch-2.p6 b/challenge-196/steve-g-lynn/raku/ch-2.p6 new file mode 100755 index 0000000000..e2102776d3 --- /dev/null +++ b/challenge-196/steve-g-lynn/raku/ch-2.p6 @@ -0,0 +1,23 @@ +#!/usr/bin/env perl6 + + +say &range-list((1,3,4,5,7)); #([3,5]) +say &range-list((1,2,3,6,7,9)); #([1,3],[6,7]) +say &range-list((0,1,2,4,5,6,8,9)); #([0,2],[4,6],[8,9]) + +sub range-list( @array) { + my @arry=@array.sort({$^a <=> $^b}).unique; #-- just in case ... + @arry=@arry.unshift(-Inf).push(-Inf); + &print-edges( @arry[(1 .. @arry-2).grep({(@arry[$_]-@arry[$_-1]==1) || (@arry[$_+1]-@arry[$_]==1)})] ); +} + +sub print-edges( @ranges ) { + my $return-string = "([@ranges[0],"; + for (1 .. @ranges-1) -> $i { + ( (@ranges[$i] - @ranges[$i-1]) > 1 ) && + ($return-string ~= (@ranges[$i-1] ~ "],[" ~ @ranges[$i] ~ ",")); + ( $i == @ranges-1 ) && + ($return-string ~= (@ranges[$i] ~ "])")) + } + $return-string; +} |
