From a7f67d008a98d3e51e273d087b4b79c290af3e61 Mon Sep 17 00:00:00 2001 From: Stephen Lynn Date: Thu, 22 Dec 2022 22:35:13 +0800 Subject: pwc 196 --- challenge-196/steve-g-lynn/blog.txt | 1 + challenge-196/steve-g-lynn/perl/ch-1.pl | 21 ++++++++++++++++++++ challenge-196/steve-g-lynn/perl/ch-2.pl | 34 +++++++++++++++++++++++++++++++++ challenge-196/steve-g-lynn/raku/ch-1.sh | 4 ++++ challenge-196/steve-g-lynn/raku/ch-2.p6 | 23 ++++++++++++++++++++++ 5 files changed, 83 insertions(+) create mode 100644 challenge-196/steve-g-lynn/blog.txt create mode 100755 challenge-196/steve-g-lynn/perl/ch-1.pl create mode 100755 challenge-196/steve-g-lynn/perl/ch-2.pl create mode 100755 challenge-196/steve-g-lynn/raku/ch-1.sh create mode 100755 challenge-196/steve-g-lynn/raku/ch-2.p6 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; +} -- cgit From 9f4638ad276b82478c335fec5ec2a240ae109195 Mon Sep 17 00:00:00 2001 From: Stephen Lynn Date: Fri, 23 Dec 2022 10:36:24 +0800 Subject: ch-2 minor improvement --- challenge-196/steve-g-lynn/perl/ch-2.pl | 8 ++++---- challenge-196/steve-g-lynn/raku/ch-2.p6 | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/challenge-196/steve-g-lynn/perl/ch-2.pl b/challenge-196/steve-g-lynn/perl/ch-2.pl index 2feb50ed23..49d8af77f5 100755 --- a/challenge-196/steve-g-lynn/perl/ch-2.pl +++ b/challenge-196/steve-g-lynn/perl/ch-2.pl @@ -24,11 +24,11 @@ sub print_edges { my @ranges = @_; my $return_string = '(['. $ranges[0] . ','; - for my $i (1 .. @ranges-1) { + for my $i (1 .. @ranges-2) { ( ($ranges[$i] - $ranges[$i-1]) > 1 ) && - ($return_string .= ($ranges[$i-1] . "],[" . $ranges[$i] . ",")); - ( $i == @ranges-1 ) && - ($return_string .= ($ranges[$i] . "])")) + ($return_string .= ($ranges[$i-1] . "],[" . $ranges[$i] . ",")); } + #-- end return string + $return_string .= ($ranges[@ranges-1] . '])'); $return_string; } diff --git a/challenge-196/steve-g-lynn/raku/ch-2.p6 b/challenge-196/steve-g-lynn/raku/ch-2.p6 index e2102776d3..9c6a14f2c5 100755 --- a/challenge-196/steve-g-lynn/raku/ch-2.p6 +++ b/challenge-196/steve-g-lynn/raku/ch-2.p6 @@ -13,11 +13,11 @@ sub range-list( @array) { sub print-edges( @ranges ) { my $return-string = "([@ranges[0],"; - for (1 .. @ranges-1) -> $i { + for (1 .. @ranges-2) -> $i { ( (@ranges[$i] - @ranges[$i-1]) > 1 ) && - ($return-string ~= (@ranges[$i-1] ~ "],[" ~ @ranges[$i] ~ ",")); - ( $i == @ranges-1 ) && - ($return-string ~= (@ranges[$i] ~ "])")) + ($return-string ~= (@ranges[$i-1] ~ "],[" ~ @ranges[$i] ~ ",")); } + #-- end the string + $return-string ~= (@ranges[@ranges-1] ~ "])"); $return-string; } -- cgit From 8607b50701e8d7f84d8c0dbe47acbfc2ec4bf3ce Mon Sep 17 00:00:00 2001 From: Stephen Lynn Date: Fri, 23 Dec 2022 15:31:48 +0800 Subject: minor fix ch-2.p6 --- challenge-196/steve-g-lynn/raku/ch-2.p6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/challenge-196/steve-g-lynn/raku/ch-2.p6 b/challenge-196/steve-g-lynn/raku/ch-2.p6 index 9c6a14f2c5..2fadb00f71 100755 --- a/challenge-196/steve-g-lynn/raku/ch-2.p6 +++ b/challenge-196/steve-g-lynn/raku/ch-2.p6 @@ -7,7 +7,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); + @arry.unshift(-Inf).push(-Inf); &print-edges( @arry[(1 .. @arry-2).grep({(@arry[$_]-@arry[$_-1]==1) || (@arry[$_+1]-@arry[$_]==1)})] ); } -- cgit