diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-10-11 23:43:51 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-10-11 23:43:51 +0100 |
| commit | 9c0efdfab5c7b1f39536625f0d5fa2d46f696fb1 (patch) | |
| tree | 079bf54cf3ed1787cf89632f75dd2cfafc2fc978 | |
| parent | 22b04040bbc7d5bda0d524d500108a5d719e0860 (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-029/arne-sommer/perl6/brace-expansion | 13 | ||||
| -rwxr-xr-x | challenge-029/arne-sommer/perl6/brace-expansion-multi | 11 | ||||
| -rwxr-xr-x | challenge-029/arne-sommer/perl6/brace-expansion-oneliner | 5 | ||||
| -rwxr-xr-x | challenge-029/arne-sommer/perl6/brace-expansion-oneliner-fixedish | 5 | ||||
| -rwxr-xr-x | challenge-029/arne-sommer/perl6/brace-expansion-turbo | 11 | ||||
| -rwxr-xr-x | challenge-029/arne-sommer/perl6/c-toupper2 | 15 | ||||
| -rwxr-xr-x | challenge-029/arne-sommer/perl6/ch-1.p6 | 11 | ||||
| -rwxr-xr-x | challenge-029/arne-sommer/perl6/ch-2.p6 | 22 | ||||
| -rw-r--r-- | challenge-029/arne-sommer/perl6/upper_string.c | 16 |
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; +} |
