aboutsummaryrefslogtreecommitdiff
path: root/challenge-196
diff options
context:
space:
mode:
authorStephen Lynn <bizlsg@localhost.localdomain>2022-12-22 22:35:13 +0800
committerStephen Lynn <bizlsg@localhost.localdomain>2022-12-22 22:35:13 +0800
commita7f67d008a98d3e51e273d087b4b79c290af3e61 (patch)
tree19c34d120929a44a2ba3b340221f40271b2350f1 /challenge-196
parent49e34ffb1226c5d931cfc8366c2bafc9836cf976 (diff)
downloadperlweeklychallenge-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.txt1
-rwxr-xr-xchallenge-196/steve-g-lynn/perl/ch-1.pl21
-rwxr-xr-xchallenge-196/steve-g-lynn/perl/ch-2.pl34
-rwxr-xr-xchallenge-196/steve-g-lynn/raku/ch-1.sh4
-rwxr-xr-xchallenge-196/steve-g-lynn/raku/ch-2.p623
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;
+}