aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-10-16 22:08:04 +0100
committerGitHub <noreply@github.com>2022-10-16 22:08:04 +0100
commitc8e324b22d2d3a6a164978fc308167b3be2253ea (patch)
tree9560e41ceef724836a12e0ea238f31abf8b43598
parentd395ef41621447da1d88d621198bea33eb7327dd (diff)
parent4a4f87831405a304328aa38576da91853c281561 (diff)
downloadperlweeklychallenge-club-c8e324b22d2d3a6a164978fc308167b3be2253ea.tar.gz
perlweeklychallenge-club-c8e324b22d2d3a6a164978fc308167b3be2253ea.tar.bz2
perlweeklychallenge-club-c8e324b22d2d3a6a164978fc308167b3be2253ea.zip
Merge pull request #6918 from arnesom/branch-for-challenge-186
Arne Sommer
-rw-r--r--challenge-186/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-186/arne-sommer/perl/ch-1.pl28
-rwxr-xr-xchallenge-186/arne-sommer/perl/ch-2.pl21
-rwxr-xr-xchallenge-186/arne-sommer/perl/unicode-makeover-perl21
-rwxr-xr-xchallenge-186/arne-sommer/perl/zip-list-perl28
-rwxr-xr-xchallenge-186/arne-sommer/raku/ch-1.raku22
-rwxr-xr-xchallenge-186/arne-sommer/raku/ch-2.raku9
-rwxr-xr-xchallenge-186/arne-sommer/raku/unicode-makeover9
-rwxr-xr-xchallenge-186/arne-sommer/raku/zip-list22
9 files changed, 161 insertions, 0 deletions
diff --git a/challenge-186/arne-sommer/blog.txt b/challenge-186/arne-sommer/blog.txt
new file mode 100644
index 0000000000..2fafa9c148
--- /dev/null
+++ b/challenge-186/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/unicode-zip.html
diff --git a/challenge-186/arne-sommer/perl/ch-1.pl b/challenge-186/arne-sommer/perl/ch-1.pl
new file mode 100755
index 0000000000..efc87d7ce7
--- /dev/null
+++ b/challenge-186/arne-sommer/perl/ch-1.pl
@@ -0,0 +1,28 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+use feature 'signatures';
+no warnings 'experimental::signatures';
+
+my @a = qw/1 2 3/;
+my @b = qw/a b c/;
+my @zip1 = zip(\@a, \@b);
+my @zip2 = zip(\@b, \@a);
+
+say 'qw/' . join(" ", @zip1) . '/;';
+say 'qw/' . join(" ", @zip2) . '/;';
+
+sub zip ($a, $b)
+{
+ my @return;
+
+ for my $index (0 .. @$a -1)
+ {
+ push(@return, $a->[$index]);
+ push(@return, $b->[$index]);
+ }
+
+ return @return;
+}
diff --git a/challenge-186/arne-sommer/perl/ch-2.pl b/challenge-186/arne-sommer/perl/ch-2.pl
new file mode 100755
index 0000000000..08f7f78b00
--- /dev/null
+++ b/challenge-186/arne-sommer/perl/ch-2.pl
@@ -0,0 +1,21 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use utf8;
+use feature 'say';
+use feature 'unicode_strings';
+use feature 'signatures';
+no warnings 'experimental::signatures';
+
+use Unicode::Normalize;
+
+say makeover('ÃÊÍÒÙ');
+say makeover('âÊíÒÙ');
+
+sub makeover ($str)
+{
+ my $nfkd = NFKD($str);
+ $nfkd =~ s/\p{NonspacingMark}//g;
+ return Unicode::Normalize::reorder(Unicode::Normalize::decompose($nfkd));
+}
diff --git a/challenge-186/arne-sommer/perl/unicode-makeover-perl b/challenge-186/arne-sommer/perl/unicode-makeover-perl
new file mode 100755
index 0000000000..08f7f78b00
--- /dev/null
+++ b/challenge-186/arne-sommer/perl/unicode-makeover-perl
@@ -0,0 +1,21 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use utf8;
+use feature 'say';
+use feature 'unicode_strings';
+use feature 'signatures';
+no warnings 'experimental::signatures';
+
+use Unicode::Normalize;
+
+say makeover('ÃÊÍÒÙ');
+say makeover('âÊíÒÙ');
+
+sub makeover ($str)
+{
+ my $nfkd = NFKD($str);
+ $nfkd =~ s/\p{NonspacingMark}//g;
+ return Unicode::Normalize::reorder(Unicode::Normalize::decompose($nfkd));
+}
diff --git a/challenge-186/arne-sommer/perl/zip-list-perl b/challenge-186/arne-sommer/perl/zip-list-perl
new file mode 100755
index 0000000000..efc87d7ce7
--- /dev/null
+++ b/challenge-186/arne-sommer/perl/zip-list-perl
@@ -0,0 +1,28 @@
+#! /usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+use feature 'signatures';
+no warnings 'experimental::signatures';
+
+my @a = qw/1 2 3/;
+my @b = qw/a b c/;
+my @zip1 = zip(\@a, \@b);
+my @zip2 = zip(\@b, \@a);
+
+say 'qw/' . join(" ", @zip1) . '/;';
+say 'qw/' . join(" ", @zip2) . '/;';
+
+sub zip ($a, $b)
+{
+ my @return;
+
+ for my $index (0 .. @$a -1)
+ {
+ push(@return, $a->[$index]);
+ push(@return, $b->[$index]);
+ }
+
+ return @return;
+}
diff --git a/challenge-186/arne-sommer/raku/ch-1.raku b/challenge-186/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..fc9cc27e0d
--- /dev/null
+++ b/challenge-186/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,22 @@
+#! /usr/bin/env raku
+
+my @a = qw/1 2 3/;
+my @b = qw/a b c/;
+my @zip1 = my-zip(@a, @b);
+my @zip2 = my-zip(@b, @a);
+
+say "qw/@zip1[]/;";
+say "qw/@zip2[]/;";
+
+sub my-zip (@a is copy, @b is copy)
+{
+ my @return;
+
+ while @a
+ {
+ @return.push: @a.shift;
+ @return.push: @b.shift;
+ }
+
+ return @return;
+}
diff --git a/challenge-186/arne-sommer/raku/ch-2.raku b/challenge-186/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..29f734c72e
--- /dev/null
+++ b/challenge-186/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,9 @@
+#! /usr/bin/env raku
+
+say makeover('ÃÊÍÒÙ');
+say makeover('âÊíÒÙ');
+
+sub makeover ($str)
+{
+ return $str.samemark('a');
+}
diff --git a/challenge-186/arne-sommer/raku/unicode-makeover b/challenge-186/arne-sommer/raku/unicode-makeover
new file mode 100755
index 0000000000..29f734c72e
--- /dev/null
+++ b/challenge-186/arne-sommer/raku/unicode-makeover
@@ -0,0 +1,9 @@
+#! /usr/bin/env raku
+
+say makeover('ÃÊÍÒÙ');
+say makeover('âÊíÒÙ');
+
+sub makeover ($str)
+{
+ return $str.samemark('a');
+}
diff --git a/challenge-186/arne-sommer/raku/zip-list b/challenge-186/arne-sommer/raku/zip-list
new file mode 100755
index 0000000000..fc9cc27e0d
--- /dev/null
+++ b/challenge-186/arne-sommer/raku/zip-list
@@ -0,0 +1,22 @@
+#! /usr/bin/env raku
+
+my @a = qw/1 2 3/;
+my @b = qw/a b c/;
+my @zip1 = my-zip(@a, @b);
+my @zip2 = my-zip(@b, @a);
+
+say "qw/@zip1[]/;";
+say "qw/@zip2[]/;";
+
+sub my-zip (@a is copy, @b is copy)
+{
+ my @return;
+
+ while @a
+ {
+ @return.push: @a.shift;
+ @return.push: @b.shift;
+ }
+
+ return @return;
+}