diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-10-02 21:54:13 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-02 21:54:13 +0100 |
| commit | fa687e87b0d2f38abe8025e5f6e8ad9a9b8dbced (patch) | |
| tree | c57c7caf1fa8e491503d0fa0cf41947d49127b14 | |
| parent | 2fdfe6dc8d29607e9bc81c2b299ad38ecc8bf93c (diff) | |
| parent | 31459c582ff7390909ea778fe7a56393376e96b5 (diff) | |
| download | perlweeklychallenge-club-fa687e87b0d2f38abe8025e5f6e8ad9a9b8dbced.tar.gz perlweeklychallenge-club-fa687e87b0d2f38abe8025e5f6e8ad9a9b8dbced.tar.bz2 perlweeklychallenge-club-fa687e87b0d2f38abe8025e5f6e8ad9a9b8dbced.zip | |
Merge pull request #6828 from arnesom/branch-for-challenge-184
Arne Sommer
| -rw-r--r-- | challenge-184/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-184/arne-sommer/perl/ch-1.pl | 30 | ||||
| -rwxr-xr-x | challenge-184/arne-sommer/perl/ch-2.pl | 43 | ||||
| -rwxr-xr-x | challenge-184/arne-sommer/perl/sequence-number-perl | 30 | ||||
| -rwxr-xr-x | challenge-184/arne-sommer/perl/split-array-perl | 43 | ||||
| -rwxr-xr-x | challenge-184/arne-sommer/raku/ch-1.raku | 22 | ||||
| -rwxr-xr-x | challenge-184/arne-sommer/raku/ch-2.raku | 29 | ||||
| -rwxr-xr-x | challenge-184/arne-sommer/raku/sequence-number | 22 | ||||
| -rwxr-xr-x | challenge-184/arne-sommer/raku/split-array | 29 |
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); +} |
