From 31459c582ff7390909ea778fe7a56393376e96b5 Mon Sep 17 00:00:00 2001 From: arnesom Date: Sun, 2 Oct 2022 22:49:34 +0200 Subject: Arne Sommer --- challenge-184/arne-sommer/blog.txt | 1 + challenge-184/arne-sommer/perl/ch-1.pl | 30 +++++++++++++++ challenge-184/arne-sommer/perl/ch-2.pl | 43 ++++++++++++++++++++++ .../arne-sommer/perl/sequence-number-perl | 30 +++++++++++++++ challenge-184/arne-sommer/perl/split-array-perl | 43 ++++++++++++++++++++++ challenge-184/arne-sommer/raku/ch-1.raku | 22 +++++++++++ challenge-184/arne-sommer/raku/ch-2.raku | 29 +++++++++++++++ challenge-184/arne-sommer/raku/sequence-number | 22 +++++++++++ challenge-184/arne-sommer/raku/split-array | 29 +++++++++++++++ 9 files changed, 249 insertions(+) create mode 100644 challenge-184/arne-sommer/blog.txt create mode 100755 challenge-184/arne-sommer/perl/ch-1.pl create mode 100755 challenge-184/arne-sommer/perl/ch-2.pl create mode 100755 challenge-184/arne-sommer/perl/sequence-number-perl create mode 100755 challenge-184/arne-sommer/perl/split-array-perl create mode 100755 challenge-184/arne-sommer/raku/ch-1.raku create mode 100755 challenge-184/arne-sommer/raku/ch-2.raku create mode 100755 challenge-184/arne-sommer/raku/sequence-number create mode 100755 challenge-184/arne-sommer/raku/split-array 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); +} -- cgit