aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlavio Poletti <flavio@polettix.it>2022-10-02 19:22:50 +0200
committerFlavio Poletti <flavio@polettix.it>2022-10-02 19:22:50 +0200
commit5756e45241c8b0027381acf86801105060078762 (patch)
tree5015a29629e7bcde17995d1c297a6cec76fb6d31
parentfeec48f758f190dd2cd43ba5c075bb08ccd4ae50 (diff)
downloadperlweeklychallenge-club-5756e45241c8b0027381acf86801105060078762.tar.gz
perlweeklychallenge-club-5756e45241c8b0027381acf86801105060078762.tar.bz2
perlweeklychallenge-club-5756e45241c8b0027381acf86801105060078762.zip
Add polettix's solution to challenge-184
-rw-r--r--challenge-184/polettix/blog.txt1
-rw-r--r--challenge-184/polettix/blog1.txt1
-rw-r--r--challenge-184/polettix/perl/ch-1.pl15
-rw-r--r--challenge-184/polettix/perl/ch-2.pl23
-rw-r--r--challenge-184/polettix/raku/ch-1.raku13
-rw-r--r--challenge-184/polettix/raku/ch-2.raku22
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);
+}