aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-09-25 22:32:00 +0100
committerGitHub <noreply@github.com>2021-09-25 22:32:00 +0100
commit7ff4cc676463bf20f3339ca46a19e2804e35ca62 (patch)
tree80786a4d022fa4cd54ab45e9f6d3ec1427558ddb
parent45e00f146e9e05761babf3d140600df918b976d5 (diff)
parentf239fe6bd297ab1822019cc046edaf13cdea0f4a (diff)
downloadperlweeklychallenge-club-7ff4cc676463bf20f3339ca46a19e2804e35ca62.tar.gz
perlweeklychallenge-club-7ff4cc676463bf20f3339ca46a19e2804e35ca62.tar.bz2
perlweeklychallenge-club-7ff4cc676463bf20f3339ca46a19e2804e35ca62.zip
Merge pull request #4922 from arnesom/branch-for-challenge-131
Arne Sommer
-rw-r--r--challenge-131/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-131/arne-sommer/perl/ch-1.pl44
-rwxr-xr-xchallenge-131/arne-sommer/perl/ch-2.pl41
-rwxr-xr-xchallenge-131/arne-sommer/perl/coar-perl44
-rwxr-xr-xchallenge-131/arne-sommer/perl/find-pairs-perl41
-rwxr-xr-xchallenge-131/arne-sommer/raku/ch-1.raku38
-rwxr-xr-xchallenge-131/arne-sommer/raku/ch-2.raku25
-rwxr-xr-xchallenge-131/arne-sommer/raku/coar37
-rwxr-xr-xchallenge-131/arne-sommer/raku/coar-fixed38
-rwxr-xr-xchallenge-131/arne-sommer/raku/find-pairs25
10 files changed, 334 insertions, 0 deletions
diff --git a/challenge-131/arne-sommer/blog.txt b/challenge-131/arne-sommer/blog.txt
new file mode 100644
index 0000000000..0cd1fb5f5d
--- /dev/null
+++ b/challenge-131/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/con-se-pair.html
diff --git a/challenge-131/arne-sommer/perl/ch-1.pl b/challenge-131/arne-sommer/perl/ch-1.pl
new file mode 100755
index 0000000000..fdd84bae37
--- /dev/null
+++ b/challenge-131/arne-sommer/perl/ch-1.pl
@@ -0,0 +1,44 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+
+use Getopt::Long;
+use Perl6::Junction 'all';
+
+my $verbose = 0;
+
+GetOptions("verbose" => \$verbose);
+
+die "Integers only" unless all(@ARGV) == qr/^\d+$/;
+
+my @result;
+
+my $current = shift(@ARGV) // die "No numbers";
+my @current = ($current);
+
+say ": Candidate: $current" if $verbose;
+
+for my $i (@ARGV)
+{
+ if ($i > $current +1)
+ {
+ my @copy = @current;
+ push(@result, \@copy);
+ say ": Push: [", join(",", @current), "]" if $verbose;
+ @current = ();
+ }
+
+ die "Not sorted ($current < $i)" unless $i > $current;
+
+ say ": Candidate: $i" if $verbose;
+
+ push(@current, $i);
+ $current = $i;
+}
+
+push(@result, \@current) if @current;
+
+say "(", join(", ", map { "[" . join(", ", @$_) . "]" } @result), ")";
+
diff --git a/challenge-131/arne-sommer/perl/ch-2.pl b/challenge-131/arne-sommer/perl/ch-2.pl
new file mode 100755
index 0000000000..e5d25114a9
--- /dev/null
+++ b/challenge-131/arne-sommer/perl/ch-2.pl
@@ -0,0 +1,41 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+
+use Getopt::Long;
+use Perl6::Junction 'any';
+
+my $verbose = 0;
+
+GetOptions("verbose" => \$verbose);
+
+my $pairs = shift(@ARGV) // '""[]()';
+my $search = shift(@ARGV) // '"I like (parens) and the Apple ][+" they said.';
+
+my @pairs = split(//, $pairs);
+my @search = split(//, $search);
+
+my @open;
+my @close;
+
+for my $index (0 .. @pairs -1)
+{
+ $index % 2 ? push(@open, $pairs[$index]) : push(@close, $pairs[$index]);
+}
+
+say ": Open: @open" if $verbose;
+say ": Close @close" if $verbose;
+
+my $open = "";
+my $close = "";
+
+for my $char (@search)
+{
+ $open .= $char if any(@open) eq $char;
+ $close .= $char if any(@close) eq $char;
+}
+
+say $open;
+say $close;
diff --git a/challenge-131/arne-sommer/perl/coar-perl b/challenge-131/arne-sommer/perl/coar-perl
new file mode 100755
index 0000000000..fdd84bae37
--- /dev/null
+++ b/challenge-131/arne-sommer/perl/coar-perl
@@ -0,0 +1,44 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+
+use Getopt::Long;
+use Perl6::Junction 'all';
+
+my $verbose = 0;
+
+GetOptions("verbose" => \$verbose);
+
+die "Integers only" unless all(@ARGV) == qr/^\d+$/;
+
+my @result;
+
+my $current = shift(@ARGV) // die "No numbers";
+my @current = ($current);
+
+say ": Candidate: $current" if $verbose;
+
+for my $i (@ARGV)
+{
+ if ($i > $current +1)
+ {
+ my @copy = @current;
+ push(@result, \@copy);
+ say ": Push: [", join(",", @current), "]" if $verbose;
+ @current = ();
+ }
+
+ die "Not sorted ($current < $i)" unless $i > $current;
+
+ say ": Candidate: $i" if $verbose;
+
+ push(@current, $i);
+ $current = $i;
+}
+
+push(@result, \@current) if @current;
+
+say "(", join(", ", map { "[" . join(", ", @$_) . "]" } @result), ")";
+
diff --git a/challenge-131/arne-sommer/perl/find-pairs-perl b/challenge-131/arne-sommer/perl/find-pairs-perl
new file mode 100755
index 0000000000..e5d25114a9
--- /dev/null
+++ b/challenge-131/arne-sommer/perl/find-pairs-perl
@@ -0,0 +1,41 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+
+use Getopt::Long;
+use Perl6::Junction 'any';
+
+my $verbose = 0;
+
+GetOptions("verbose" => \$verbose);
+
+my $pairs = shift(@ARGV) // '""[]()';
+my $search = shift(@ARGV) // '"I like (parens) and the Apple ][+" they said.';
+
+my @pairs = split(//, $pairs);
+my @search = split(//, $search);
+
+my @open;
+my @close;
+
+for my $index (0 .. @pairs -1)
+{
+ $index % 2 ? push(@open, $pairs[$index]) : push(@close, $pairs[$index]);
+}
+
+say ": Open: @open" if $verbose;
+say ": Close @close" if $verbose;
+
+my $open = "";
+my $close = "";
+
+for my $char (@search)
+{
+ $open .= $char if any(@open) eq $char;
+ $close .= $char if any(@close) eq $char;
+}
+
+say $open;
+say $close;
diff --git a/challenge-131/arne-sommer/raku/ch-1.raku b/challenge-131/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..2b7bcf7551
--- /dev/null
+++ b/challenge-131/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,38 @@
+#! /usr/bin/env raku
+
+multi MAIN (Str $input = "1 2 3 6 7 8 9", :v(:$verbose))
+{
+ my @input = $input.words;
+ MAIN(@input, :$verbose);
+}
+
+multi MAIN (*@input where @input.elems > 1 && all(@input) ~~ /^\d+$/, :v(:$verbose))
+{
+ die "Not sorted" unless [<] @input;
+
+ my @result;
+ my $current = @input.shift;
+ my @current = $current,;
+
+ say ": Candidate: $current" if $verbose;
+
+ for @input -> $i
+ {
+ if $i > $current +1
+ {
+ @result.push: @current.clone;
+ say ": Push: [", @current.join(","), "]" if $verbose;
+ @current = ();
+ }
+
+ say ": Candidate: $i" if $verbose;
+
+ @current.push: $i;
+ $current = $i;
+ }
+
+ @result.push: @current if @current;
+
+ say '(' ~ @result.map({ '[' ~ @$_.join(', ') ~ ']' }).join(', ') ~ ')';
+
+}
diff --git a/challenge-131/arne-sommer/raku/ch-2.raku b/challenge-131/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..bb56753653
--- /dev/null
+++ b/challenge-131/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,25 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($pairs = '""[]()',
+ $search = '"I like (parens) and the Apple ][+" they said.',
+ :v(:$verbose));
+
+my @pairs = $pairs.comb;
+
+my @open = @pairs[0, 2 ... *];
+my @close = @pairs[1, 3 ... *];
+
+say ": Open: @open[]" if $verbose;
+say ": Close @close[]" if $verbose;
+
+my $open = "";
+my $close = "";
+
+for $search.comb -> $char
+{
+ $open ~= $char if any(@open) eq $char;
+ $close ~= $char if any(@close) eq $char;
+}
+
+say $open;
+say $close;
diff --git a/challenge-131/arne-sommer/raku/coar b/challenge-131/arne-sommer/raku/coar
new file mode 100755
index 0000000000..10af3d3e8a
--- /dev/null
+++ b/challenge-131/arne-sommer/raku/coar
@@ -0,0 +1,37 @@
+#! /usr/bin/env raku
+
+multi MAIN (Str $input = "1 2 3 6 7 8 9", :v(:$verbose))
+{
+ my @input = $input.words;
+ MAIN(@input, :$verbose);
+}
+
+multi MAIN (*@input where @input.elems > 1 && all(@input) ~~ /^\d+$/, :v(:$verbose))
+{
+ die "Not sorted" unless [<] @input;
+
+ my @result;
+ my $current = @input.shift;
+ my @current = $current,;
+
+ say ": Candidate: $current" if $verbose;
+
+ for @input -> $i
+ {
+ if $i > $current +1
+ {
+ @result.push: @current.clone;
+ say ": Push: [", @current.join(","), "]" if $verbose;
+ @current = ();
+ }
+
+ say ": Candidate: $i" if $verbose;
+
+ @current.push: $i;
+ $current = $i;
+ }
+
+ @result.push: @current if @current;
+
+ say @result;
+}
diff --git a/challenge-131/arne-sommer/raku/coar-fixed b/challenge-131/arne-sommer/raku/coar-fixed
new file mode 100755
index 0000000000..2b7bcf7551
--- /dev/null
+++ b/challenge-131/arne-sommer/raku/coar-fixed
@@ -0,0 +1,38 @@
+#! /usr/bin/env raku
+
+multi MAIN (Str $input = "1 2 3 6 7 8 9", :v(:$verbose))
+{
+ my @input = $input.words;
+ MAIN(@input, :$verbose);
+}
+
+multi MAIN (*@input where @input.elems > 1 && all(@input) ~~ /^\d+$/, :v(:$verbose))
+{
+ die "Not sorted" unless [<] @input;
+
+ my @result;
+ my $current = @input.shift;
+ my @current = $current,;
+
+ say ": Candidate: $current" if $verbose;
+
+ for @input -> $i
+ {
+ if $i > $current +1
+ {
+ @result.push: @current.clone;
+ say ": Push: [", @current.join(","), "]" if $verbose;
+ @current = ();
+ }
+
+ say ": Candidate: $i" if $verbose;
+
+ @current.push: $i;
+ $current = $i;
+ }
+
+ @result.push: @current if @current;
+
+ say '(' ~ @result.map({ '[' ~ @$_.join(', ') ~ ']' }).join(', ') ~ ')';
+
+}
diff --git a/challenge-131/arne-sommer/raku/find-pairs b/challenge-131/arne-sommer/raku/find-pairs
new file mode 100755
index 0000000000..bb56753653
--- /dev/null
+++ b/challenge-131/arne-sommer/raku/find-pairs
@@ -0,0 +1,25 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($pairs = '""[]()',
+ $search = '"I like (parens) and the Apple ][+" they said.',
+ :v(:$verbose));
+
+my @pairs = $pairs.comb;
+
+my @open = @pairs[0, 2 ... *];
+my @close = @pairs[1, 3 ... *];
+
+say ": Open: @open[]" if $verbose;
+say ": Close @close[]" if $verbose;
+
+my $open = "";
+my $close = "";
+
+for $search.comb -> $char
+{
+ $open ~= $char if any(@open) eq $char;
+ $close ~= $char if any(@close) eq $char;
+}
+
+say $open;
+say $close;