aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2019-10-11 23:43:51 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2019-10-11 23:43:51 +0100
commit9c0efdfab5c7b1f39536625f0d5fa2d46f696fb1 (patch)
tree079bf54cf3ed1787cf89632f75dd2cfafc2fc978
parent22b04040bbc7d5bda0d524d500108a5d719e0860 (diff)
downloadperlweeklychallenge-club-9c0efdfab5c7b1f39536625f0d5fa2d46f696fb1.tar.gz
perlweeklychallenge-club-9c0efdfab5c7b1f39536625f0d5fa2d46f696fb1.tar.bz2
perlweeklychallenge-club-9c0efdfab5c7b1f39536625f0d5fa2d46f696fb1.zip
- Added solutions by Arne Sommer.
-rw-r--r--challenge-029/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-029/arne-sommer/perl6/brace-expansion13
-rwxr-xr-xchallenge-029/arne-sommer/perl6/brace-expansion-multi11
-rwxr-xr-xchallenge-029/arne-sommer/perl6/brace-expansion-oneliner5
-rwxr-xr-xchallenge-029/arne-sommer/perl6/brace-expansion-oneliner-fixedish5
-rwxr-xr-xchallenge-029/arne-sommer/perl6/brace-expansion-turbo11
-rwxr-xr-xchallenge-029/arne-sommer/perl6/c-toupper215
-rwxr-xr-xchallenge-029/arne-sommer/perl6/ch-1.p611
-rwxr-xr-xchallenge-029/arne-sommer/perl6/ch-2.p622
-rw-r--r--challenge-029/arne-sommer/perl6/upper_string.c16
10 files changed, 110 insertions, 0 deletions
diff --git a/challenge-029/arne-sommer/blog.txt b/challenge-029/arne-sommer/blog.txt
new file mode 100644
index 0000000000..c9f4953af3
--- /dev/null
+++ b/challenge-029/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://perl6.eu/bracen-c.html
diff --git a/challenge-029/arne-sommer/perl6/brace-expansion b/challenge-029/arne-sommer/perl6/brace-expansion
new file mode 100755
index 0000000000..e3b290f137
--- /dev/null
+++ b/challenge-029/arne-sommer/perl6/brace-expansion
@@ -0,0 +1,13 @@
+#! /usr/bin/env perl6
+
+sub MAIN ($string)
+{
+ if $string ~~ /(.*) \{ (.*) \} (.*)/
+ {
+ say "$0$_$2" for $1.Str.split(",")
+ }
+ else
+ {
+ say $string;
+ }
+} \ No newline at end of file
diff --git a/challenge-029/arne-sommer/perl6/brace-expansion-multi b/challenge-029/arne-sommer/perl6/brace-expansion-multi
new file mode 100755
index 0000000000..a8e0a9db25
--- /dev/null
+++ b/challenge-029/arne-sommer/perl6/brace-expansion-multi
@@ -0,0 +1,11 @@
+#! /usr/bin/env perl6
+
+multi MAIN ($string where $string ~~ /(.*) \{ (.*) \} (.*)/)
+{
+ say "$0$_$2" for $1.Str.split(",")
+}
+
+multi MAIN ($string)
+{
+ say $string;
+} \ No newline at end of file
diff --git a/challenge-029/arne-sommer/perl6/brace-expansion-oneliner b/challenge-029/arne-sommer/perl6/brace-expansion-oneliner
new file mode 100755
index 0000000000..77c9fcd946
--- /dev/null
+++ b/challenge-029/arne-sommer/perl6/brace-expansion-oneliner
@@ -0,0 +1,5 @@
+#! /usr/bin/env perl6
+
+@*ARGS && @*ARGS[0] ~~ /(.*) \{ (.*) \} (.*)/
+ ?? $1.Str.split(",").map({ say "$0$_$2" })
+ !! say @*ARGS[0];
diff --git a/challenge-029/arne-sommer/perl6/brace-expansion-oneliner-fixedish b/challenge-029/arne-sommer/perl6/brace-expansion-oneliner-fixedish
new file mode 100755
index 0000000000..7ec52e250e
--- /dev/null
+++ b/challenge-029/arne-sommer/perl6/brace-expansion-oneliner-fixedish
@@ -0,0 +1,5 @@
+#! /usr/bin/env perl6
+
+@*ARGS && (@*ARGS[0] ~~ /(.*) \{ (.*) \} (.*)/
+ ?? $1.Str.split(",").map({ say "$0$_$2" })
+ !! say @*ARGS[0]);
diff --git a/challenge-029/arne-sommer/perl6/brace-expansion-turbo b/challenge-029/arne-sommer/perl6/brace-expansion-turbo
new file mode 100755
index 0000000000..7e37baf05e
--- /dev/null
+++ b/challenge-029/arne-sommer/perl6/brace-expansion-turbo
@@ -0,0 +1,11 @@
+#! /usr/bin/env perl6
+
+multi MAIN ($string where $string ~~ /(.*) \{ (.*) \} (.*)/)
+{
+ MAIN("$0$_$2") for $1.Str.split(",");
+}
+
+multi MAIN ($string)
+{
+ say $string;
+} \ No newline at end of file
diff --git a/challenge-029/arne-sommer/perl6/c-toupper2 b/challenge-029/arne-sommer/perl6/c-toupper2
new file mode 100755
index 0000000000..b51ef9ee69
--- /dev/null
+++ b/challenge-029/arne-sommer/perl6/c-toupper2
@@ -0,0 +1,15 @@
+#! /usr/bin/env perl6
+
+use NativeCall;
+
+sub upper_string(Str) returns Str is native('./upper_string.so') { * }
+
+sub MAIN ($string)
+{
+ say "Before: $string";
+
+ my $new = upper_string($string);
+
+ say "After: $new";
+}
+
diff --git a/challenge-029/arne-sommer/perl6/ch-1.p6 b/challenge-029/arne-sommer/perl6/ch-1.p6
new file mode 100755
index 0000000000..443b5df889
--- /dev/null
+++ b/challenge-029/arne-sommer/perl6/ch-1.p6
@@ -0,0 +1,11 @@
+#! /usr/bin/env perl6
+
+multi MAIN ($string where $string ~~ /^(.*?) \{ (.*?) \} (.*)/)
+{
+ MAIN("$0$_$2") for $1.Str.split(",");
+}
+
+multi MAIN ($string)
+{
+ say $string;
+} \ No newline at end of file
diff --git a/challenge-029/arne-sommer/perl6/ch-2.p6 b/challenge-029/arne-sommer/perl6/ch-2.p6
new file mode 100755
index 0000000000..fdda036d10
--- /dev/null
+++ b/challenge-029/arne-sommer/perl6/ch-2.p6
@@ -0,0 +1,22 @@
+#! /usr/bin/env perl6
+
+# https://docs.perl6.org/language/nativecall
+
+use NativeCall;
+
+sub toupper(uint8) returns uint8 is native('c', v6) { * }
+
+sub to-upper ($string)
+{
+ return $string.comb.map({ toupper($_.ord).chr }).join;
+}
+
+sub MAIN ($string)
+{
+ say "Before: $string";
+
+ my $new = to-upper($string);
+
+ say "After: $new";
+}
+
diff --git a/challenge-029/arne-sommer/perl6/upper_string.c b/challenge-029/arne-sommer/perl6/upper_string.c
new file mode 100644
index 0000000000..23efa858aa
--- /dev/null
+++ b/challenge-029/arne-sommer/perl6/upper_string.c
@@ -0,0 +1,16 @@
+#include <string.h>
+#include <ctype.h>
+
+char *upper_string(char s[])
+{
+ int c = 0;
+ static char string[1000];
+
+ while (s[c] != '\0')
+ {
+ string[c] = toupper(s[c]);
+ c++;
+ }
+ string[c] = '\0';
+ return string;
+}