aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-184/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-184/arne-sommer/perl/ch-1.pl30
-rwxr-xr-xchallenge-184/arne-sommer/perl/ch-2.pl43
-rwxr-xr-xchallenge-184/arne-sommer/perl/sequence-number-perl30
-rwxr-xr-xchallenge-184/arne-sommer/perl/split-array-perl43
-rwxr-xr-xchallenge-184/arne-sommer/raku/ch-1.raku22
-rwxr-xr-xchallenge-184/arne-sommer/raku/ch-2.raku29
-rwxr-xr-xchallenge-184/arne-sommer/raku/sequence-number22
-rwxr-xr-xchallenge-184/arne-sommer/raku/split-array29
9 files changed, 249 insertions, 0 deletions
diff --git a/challenge-184/arne-sommer/blog.txt b/challenge-184/arne-sommer/blog.txt
new file mode 100644
index 0000000000..2b4f6a4a2d
--- /dev/null
+++ b/challenge-184/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/sequenced-split.html
diff --git a/challenge-184/arne-sommer/perl/ch-1.pl b/challenge-184/arne-sommer/perl/ch-1.pl
new file mode 100755
index 0000000000..691f370b8f
--- /dev/null
+++ b/challenge-184/arne-sommer/perl/ch-1.pl
@@ -0,0 +1,30 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+use v5.20;
+
+use feature 'signatures';
+no warnings 'experimental::signatures';
+
+my @list1 = ('ab1234', 'cd5678', 'ef1342');
+my @list2 = ('pq1122', 'rs3334');
+
+say sequence_number(@list1);
+say sequence_number(@list2);
+
+sub sequence_number (@list)
+{
+ my @return;
+
+ for my $string (@list)
+ {
+ state $count = 0;
+
+ push(@return, sprintf('%02d', $count) . substr($string, 2, 4));
+ $count++;
+ }
+
+ return "(" . join(", ", map { "'$_'"} @return) . ")";
+}
diff --git a/challenge-184/arne-sommer/perl/ch-2.pl b/challenge-184/arne-sommer/perl/ch-2.pl
new file mode 100755
index 0000000000..1a764f614b
--- /dev/null
+++ b/challenge-184/arne-sommer/perl/ch-2.pl
@@ -0,0 +1,43 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+use feature 'signatures';
+
+no warnings 'experimental::signatures';
+
+use Perl6::Junction 'any';
+
+my @list1 = ('a 1 2 b 0', '3 c 4 d');
+my @list2 = ('1 2', 'p q r', 's 3', '4 5 t');
+
+say split_array(@list1);
+say split_array(@list2);
+
+sub split_array (@list)
+{
+ my @digits;
+ my @letters;
+
+ for my $string (@list)
+ {
+ my @d_curr;
+ my @l_curr;
+
+ for my $char (split(" ", $string))
+ {
+ $char eq any(0..9) ? push(@d_curr, $char) : push(@l_curr, $char);
+ }
+
+ push(@digits, "[" . join(",", @d_curr) . "]") if @d_curr;
+ push(@letters, "[" . join(",", map { "'" . $_ . "'" } @l_curr) . "]") if @l_curr;
+ }
+
+ my @return;
+
+ push(@return, "[" . join (", ", @digits) . "]") if @digits;
+ push(@return, "[" . join (", ", @letters) . "]") if @letters;
+
+ return join(" and ", @return);
+}
diff --git a/challenge-184/arne-sommer/perl/sequence-number-perl b/challenge-184/arne-sommer/perl/sequence-number-perl
new file mode 100755
index 0000000000..691f370b8f
--- /dev/null
+++ b/challenge-184/arne-sommer/perl/sequence-number-perl
@@ -0,0 +1,30 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+use v5.20;
+
+use feature 'signatures';
+no warnings 'experimental::signatures';
+
+my @list1 = ('ab1234', 'cd5678', 'ef1342');
+my @list2 = ('pq1122', 'rs3334');
+
+say sequence_number(@list1);
+say sequence_number(@list2);
+
+sub sequence_number (@list)
+{
+ my @return;
+
+ for my $string (@list)
+ {
+ state $count = 0;
+
+ push(@return, sprintf('%02d', $count) . substr($string, 2, 4));
+ $count++;
+ }
+
+ return "(" . join(", ", map { "'$_'"} @return) . ")";
+}
diff --git a/challenge-184/arne-sommer/perl/split-array-perl b/challenge-184/arne-sommer/perl/split-array-perl
new file mode 100755
index 0000000000..1a764f614b
--- /dev/null
+++ b/challenge-184/arne-sommer/perl/split-array-perl
@@ -0,0 +1,43 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+use feature 'signatures';
+
+no warnings 'experimental::signatures';
+
+use Perl6::Junction 'any';
+
+my @list1 = ('a 1 2 b 0', '3 c 4 d');
+my @list2 = ('1 2', 'p q r', 's 3', '4 5 t');
+
+say split_array(@list1);
+say split_array(@list2);
+
+sub split_array (@list)
+{
+ my @digits;
+ my @letters;
+
+ for my $string (@list)
+ {
+ my @d_curr;
+ my @l_curr;
+
+ for my $char (split(" ", $string))
+ {
+ $char eq any(0..9) ? push(@d_curr, $char) : push(@l_curr, $char);
+ }
+
+ push(@digits, "[" . join(",", @d_curr) . "]") if @d_curr;
+ push(@letters, "[" . join(",", map { "'" . $_ . "'" } @l_curr) . "]") if @l_curr;
+ }
+
+ my @return;
+
+ push(@return, "[" . join (", ", @digits) . "]") if @digits;
+ push(@return, "[" . join (", ", @letters) . "]") if @letters;
+
+ return join(" and ", @return);
+}
diff --git a/challenge-184/arne-sommer/raku/ch-1.raku b/challenge-184/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..5c64614aa5
--- /dev/null
+++ b/challenge-184/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,22 @@
+#! /usr/bin/env raku
+
+my @list1 = ('ab1234', 'cd5678', 'ef1342');
+my @list2 = ('pq1122', 'rs3334');
+
+say sequence-number(@list1);
+say sequence-number(@list2);
+
+sub sequence-number (@list)
+{
+ my @return;
+
+ for @list -> $string
+ {
+ state $count = 0;
+
+ @return.push($count.fmt('%02d') ~ $string.substr(2,4));
+ $count++;
+ }
+
+ return @return;
+}
diff --git a/challenge-184/arne-sommer/raku/ch-2.raku b/challenge-184/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..c8f8dfda79
--- /dev/null
+++ b/challenge-184/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,29 @@
+#! /usr/bin/env raku
+
+my @list1 = ('a 1 2 b 0', '3 c 4 d');
+my @list2 = ('1 2', 'p q r', 's 3', '4 5 t');
+
+say split-array(@list1);
+say split-array(@list2);
+
+sub split-array (@list)
+{
+ my @digits;
+ my @letters;
+
+ for @list -> $string
+ {
+ my @d-curr;
+ my @l-curr;
+
+ for $string.words -> $char
+ {
+ $char eq any(0..9) ?? @d-curr.push($char) !! @l-curr.push($char);
+ }
+
+ @digits.push: @d-curr if @d-curr;
+ @letters.push: @l-curr if @l-curr;
+ }
+
+ return (@digits, @letters);
+}
diff --git a/challenge-184/arne-sommer/raku/sequence-number b/challenge-184/arne-sommer/raku/sequence-number
new file mode 100755
index 0000000000..5c64614aa5
--- /dev/null
+++ b/challenge-184/arne-sommer/raku/sequence-number
@@ -0,0 +1,22 @@
+#! /usr/bin/env raku
+
+my @list1 = ('ab1234', 'cd5678', 'ef1342');
+my @list2 = ('pq1122', 'rs3334');
+
+say sequence-number(@list1);
+say sequence-number(@list2);
+
+sub sequence-number (@list)
+{
+ my @return;
+
+ for @list -> $string
+ {
+ state $count = 0;
+
+ @return.push($count.fmt('%02d') ~ $string.substr(2,4));
+ $count++;
+ }
+
+ return @return;
+}
diff --git a/challenge-184/arne-sommer/raku/split-array b/challenge-184/arne-sommer/raku/split-array
new file mode 100755
index 0000000000..c8f8dfda79
--- /dev/null
+++ b/challenge-184/arne-sommer/raku/split-array
@@ -0,0 +1,29 @@
+#! /usr/bin/env raku
+
+my @list1 = ('a 1 2 b 0', '3 c 4 d');
+my @list2 = ('1 2', 'p q r', 's 3', '4 5 t');
+
+say split-array(@list1);
+say split-array(@list2);
+
+sub split-array (@list)
+{
+ my @digits;
+ my @letters;
+
+ for @list -> $string
+ {
+ my @d-curr;
+ my @l-curr;
+
+ for $string.words -> $char
+ {
+ $char eq any(0..9) ?? @d-curr.push($char) !! @l-curr.push($char);
+ }
+
+ @digits.push: @d-curr if @d-curr;
+ @letters.push: @l-curr if @l-curr;
+ }
+
+ return (@digits, @letters);
+}