diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2024-02-13 01:13:45 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-13 01:13:45 +0000 |
| commit | 90ca0d9c3eab8fc6e8561902071089062bd2933b (patch) | |
| tree | f3ab7e89cb031295deadbf7c9a8dd0968447c734 | |
| parent | 72bce7105632e4966e4c22000af3c01fb045ddc2 (diff) | |
| parent | ee54e95e9af4df401727adb44ff2df0c4ca5e7b4 (diff) | |
| download | perlweeklychallenge-club-90ca0d9c3eab8fc6e8561902071089062bd2933b.tar.gz perlweeklychallenge-club-90ca0d9c3eab8fc6e8561902071089062bd2933b.tar.bz2 perlweeklychallenge-club-90ca0d9c3eab8fc6e8561902071089062bd2933b.zip | |
Merge pull request #9574 from arnesom/branch-for-challenge-256
Arne Sommer
| -rw-r--r-- | challenge-256/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-256/arne-sommer/raku/ch-1.raku | 28 | ||||
| -rwxr-xr-x | challenge-256/arne-sommer/raku/ch-2.raku | 6 | ||||
| -rwxr-xr-x | challenge-256/arne-sommer/raku/maximum-pairs | 24 | ||||
| -rwxr-xr-x | challenge-256/arne-sommer/raku/maximum-pairs-palindrome | 28 | ||||
| -rwxr-xr-x | challenge-256/arne-sommer/raku/merge-strings | 6 | ||||
| -rwxr-xr-x | challenge-256/arne-sommer/raku/merge-strings-gather | 27 |
7 files changed, 120 insertions, 0 deletions
diff --git a/challenge-256/arne-sommer/blog.txt b/challenge-256/arne-sommer/blog.txt new file mode 100644 index 0000000000..64b4179d82 --- /dev/null +++ b/challenge-256/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/merged-maximum.html diff --git a/challenge-256/arne-sommer/raku/ch-1.raku b/challenge-256/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..aa1057def4 --- /dev/null +++ b/challenge-256/arne-sommer/raku/ch-1.raku @@ -0,0 +1,28 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@words where @words.elems > 0 && @words.elems == @words.unique.elems, + :v(:$verbose)); + +my $words = @words.Set; +my $count = 0; + +for $words.keys.sort -> $word +{ + my $reverse = $word.flip; + + if ($word eq $reverse) + { + say ": Word $word is a palindrome" if $verbose; + } + elsif $words{$reverse} + { + $count++; + say ": + Word $word has a reverse ({$reverse})" if $verbose; + } + elsif ($verbose) + { + say ": Word $word does not have a reverse" if $verbose; + } +} + +say $count div 2;
\ No newline at end of file diff --git a/challenge-256/arne-sommer/raku/ch-2.raku b/challenge-256/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..6b5588dfd4 --- /dev/null +++ b/challenge-256/arne-sommer/raku/ch-2.raku @@ -0,0 +1,6 @@ +#! /usr/bin/env raku + +unit sub MAIN ($str1 where $str1.chars > 0, + $str2 where $str2.chars > 0); + +say roundrobin($str1.comb, $str2.comb)>>.join.join; diff --git a/challenge-256/arne-sommer/raku/maximum-pairs b/challenge-256/arne-sommer/raku/maximum-pairs new file mode 100755 index 0000000000..e389f6c0ef --- /dev/null +++ b/challenge-256/arne-sommer/raku/maximum-pairs @@ -0,0 +1,24 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@words where @words.elems > 0 && @words.elems == @words.unique.elems, + :v(:$verbose)); + +my $words = @words.Set; +my $count = 0; + +for $words.keys.sort -> $word +{ + my $reverse = $word.flip; + + if $words{$reverse} + { + $count++; + say ": + Word $word has a reverse ({$reverse})" if $verbose; + } + elsif ($verbose) + { + say ": Word $word does not have a reverse" if $verbose; + } +} + +say $count div 2;
\ No newline at end of file diff --git a/challenge-256/arne-sommer/raku/maximum-pairs-palindrome b/challenge-256/arne-sommer/raku/maximum-pairs-palindrome new file mode 100755 index 0000000000..aa1057def4 --- /dev/null +++ b/challenge-256/arne-sommer/raku/maximum-pairs-palindrome @@ -0,0 +1,28 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@words where @words.elems > 0 && @words.elems == @words.unique.elems, + :v(:$verbose)); + +my $words = @words.Set; +my $count = 0; + +for $words.keys.sort -> $word +{ + my $reverse = $word.flip; + + if ($word eq $reverse) + { + say ": Word $word is a palindrome" if $verbose; + } + elsif $words{$reverse} + { + $count++; + say ": + Word $word has a reverse ({$reverse})" if $verbose; + } + elsif ($verbose) + { + say ": Word $word does not have a reverse" if $verbose; + } +} + +say $count div 2;
\ No newline at end of file diff --git a/challenge-256/arne-sommer/raku/merge-strings b/challenge-256/arne-sommer/raku/merge-strings new file mode 100755 index 0000000000..6b5588dfd4 --- /dev/null +++ b/challenge-256/arne-sommer/raku/merge-strings @@ -0,0 +1,6 @@ +#! /usr/bin/env raku + +unit sub MAIN ($str1 where $str1.chars > 0, + $str2 where $str2.chars > 0); + +say roundrobin($str1.comb, $str2.comb)>>.join.join; diff --git a/challenge-256/arne-sommer/raku/merge-strings-gather b/challenge-256/arne-sommer/raku/merge-strings-gather new file mode 100755 index 0000000000..661dd028b2 --- /dev/null +++ b/challenge-256/arne-sommer/raku/merge-strings-gather @@ -0,0 +1,27 @@ +#! /usr/bin/env raku + +unit sub MAIN ($str1 where $str1.chars > 0, + $str2 where $str2.chars > 0, + :v(:$verbose)); + +my $ms := gather +{ + my @str1 = $str1.comb; + my @str2 = $str2.comb; + + while (@str1.elems || @str2.elems) + { + if @str1.elems + { + say ":Fetching character '@str1[0]' from string 1" if $verbose; + take @str1.shift; + } + if @str2.elems + { + say ":Fetching character '@str2[0]' from string 2" if $verbose; + take @str2.shift; + } + } +} + +say $ms.join; |
