diff options
| -rw-r--r-- | challenge-184/polettix/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-184/polettix/blog1.txt | 1 | ||||
| -rw-r--r-- | challenge-184/polettix/perl/ch-1.pl | 15 | ||||
| -rw-r--r-- | challenge-184/polettix/perl/ch-2.pl | 23 | ||||
| -rw-r--r-- | challenge-184/polettix/raku/ch-1.raku | 13 | ||||
| -rw-r--r-- | challenge-184/polettix/raku/ch-2.raku | 22 |
6 files changed, 75 insertions, 0 deletions
diff --git a/challenge-184/polettix/blog.txt b/challenge-184/polettix/blog.txt new file mode 100644 index 0000000000..40571ff122 --- /dev/null +++ b/challenge-184/polettix/blog.txt @@ -0,0 +1 @@ +https://etoobusy.polettix.it/2022/09/29/pwc184-sequence-number/ diff --git a/challenge-184/polettix/blog1.txt b/challenge-184/polettix/blog1.txt new file mode 100644 index 0000000000..2ee4e6950f --- /dev/null +++ b/challenge-184/polettix/blog1.txt @@ -0,0 +1 @@ +https://etoobusy.polettix.it/2022/09/30/pwc184-split-array/ diff --git a/challenge-184/polettix/perl/ch-1.pl b/challenge-184/polettix/perl/ch-1.pl new file mode 100644 index 0000000000..3197ec196c --- /dev/null +++ b/challenge-184/polettix/perl/ch-1.pl @@ -0,0 +1,15 @@ +#!/usr/bin/env perl +use v5.24; +use warnings; +use experimental 'signatures'; +no warnings 'experimental::signatures'; + +my @list = qw< ab1234 cd5678 ef1342 >; +sequence_number(\@list); +say for @list; + +sub sequence_number ($list) { + my $n = 0; + substr $_, 0, 2, sprintf '%02d', $n++ for $list->@*; + return $list; +} diff --git a/challenge-184/polettix/perl/ch-2.pl b/challenge-184/polettix/perl/ch-2.pl new file mode 100644 index 0000000000..cacfd091a3 --- /dev/null +++ b/challenge-184/polettix/perl/ch-2.pl @@ -0,0 +1,23 @@ +#!/usr/bin/env perl +use v5.24; +use warnings; +use experimental 'signatures'; +no warnings 'experimental::signatures'; +use Data::Dumper; + +my @l = ('1 2', 'p q r', 's 3', '4 5 t'); +say Dumper([split_array(@l)]); + +sub split_array (@list) { + my (@digits, @letters); + for my $item (@list) { + my (@ds, @ls); + for my $char (split m{\s+}mxs, $item) { + if ($char =~ m{\d}mxs) { push @ds, $char } + else { push @ls, $char } + } + push @digits, \@ds if @ds; + push @letters, \@ls if @ls; + } + return (\@digits, \@letters); +} diff --git a/challenge-184/polettix/raku/ch-1.raku b/challenge-184/polettix/raku/ch-1.raku new file mode 100644 index 0000000000..729a7fd569 --- /dev/null +++ b/challenge-184/polettix/raku/ch-1.raku @@ -0,0 +1,13 @@ +#!/usr/bin/env raku +use v6; +sub MAIN { + my @l = < ab1234 cd5678 ef1342 >; + sequence-number(@l); + .put for @l; +} + +sub sequence-number (@list) { + my $n = 0; + @list.map({.substr-rw(0, 2) = '%02d'.sprintf($n++)}); + @list; +} diff --git a/challenge-184/polettix/raku/ch-2.raku b/challenge-184/polettix/raku/ch-2.raku new file mode 100644 index 0000000000..fb49ac833d --- /dev/null +++ b/challenge-184/polettix/raku/ch-2.raku @@ -0,0 +1,22 @@ +#!/usr/bin/env raku +use v6; +sub MAIN { + my @l = '1 2', 'p q r', 's 3', '4 5 t'; + my ($digits, $letters) = split-array(@l); + say $digits; + say $letters; +} + +sub split-array (@list) { + my (@digits, @letters); + for @list -> $item { + my (@ds, @ls); + for $item.comb(/\S/) -> $char { + if ($char ~~ /\d/) { @ds.push: $char } + else { @ls.push: $char } + } + @digits.push: @ds if @ds; + @letters.push: @ls if @ls; + } + return (@digits, @letters); +} |
