aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-05-22 00:27:48 +0100
committerGitHub <noreply@github.com>2025-05-22 00:27:48 +0100
commit6407597e2dd471b6dd4bcd1ac6dd7a4ffb8ec050 (patch)
tree7b893bd89599a3717bea5ff894b135fe17dcf1a3
parent4c3f319e0162db89096ea5e61bdc49c42ff50321 (diff)
parent09cb557d49b2058b90f91ccc58dfd65518c3ee2c (diff)
downloadperlweeklychallenge-club-6407597e2dd471b6dd4bcd1ac6dd7a4ffb8ec050.tar.gz
perlweeklychallenge-club-6407597e2dd471b6dd4bcd1ac6dd7a4ffb8ec050.tar.bz2
perlweeklychallenge-club-6407597e2dd471b6dd4bcd1ac6dd7a4ffb8ec050.zip
Merge pull request #12060 from arnesom/branch-for-challenge-322
Arne Sommer
-rw-r--r--challenge-322/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-322/arne-sommer/raku/ch-1.raku28
-rwxr-xr-xchallenge-322/arne-sommer/raku/ch-2.raku23
-rwxr-xr-xchallenge-322/arne-sommer/raku/rank-array23
-rwxr-xr-xchallenge-322/arne-sommer/raku/string-format33
-rwxr-xr-xchallenge-322/arne-sommer/raku/string-format-reverse28
6 files changed, 136 insertions, 0 deletions
diff --git a/challenge-322/arne-sommer/blog.txt b/challenge-322/arne-sommer/blog.txt
new file mode 100644
index 0000000000..e4948400f3
--- /dev/null
+++ b/challenge-322/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/stringed-array.html
diff --git a/challenge-322/arne-sommer/raku/ch-1.raku b/challenge-322/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..2719efa695
--- /dev/null
+++ b/challenge-322/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,28 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($str is copy where $str.chars > 0,
+ Int $i where $i > 0,
+ :v(:$verbose));
+
+$str ~~ s:g/"-"//;
+
+say ": Dash free: $str" if $verbose;
+
+my @new;
+
+while $str.chars >= $i
+{
+ my $add = $str.substr($str.chars - $i);
+ $str = $str.substr(0, $str.chars - $i);
+
+ @new.unshift: $add;
+ say ": Full size part: $add" if $verbose;
+}
+
+if $str.chars
+{
+ @new.unshift: $str;
+ say ": Short part: $str" if $verbose;
+}
+
+say @new.join("-");
diff --git a/challenge-322/arne-sommer/raku/ch-2.raku b/challenge-322/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..991a565819
--- /dev/null
+++ b/challenge-322/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,23 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where @ints.elems > 1
+ && all(@ints) ~~ Int,
+ :v(:$verbose));
+
+my @sorted = @ints.sort.squish;
+
+my %rank;
+my $rank = 0;
+
+for @sorted -> $val
+{
+ $rank++;
+
+ %rank{$val} = $rank;
+
+ say ": Int $val has rank $rank" if $verbose;
+}
+
+my @rank = @ints.map({ %rank{$_} });
+
+say "({ @rank.join(", ") })";
diff --git a/challenge-322/arne-sommer/raku/rank-array b/challenge-322/arne-sommer/raku/rank-array
new file mode 100755
index 0000000000..991a565819
--- /dev/null
+++ b/challenge-322/arne-sommer/raku/rank-array
@@ -0,0 +1,23 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where @ints.elems > 1
+ && all(@ints) ~~ Int,
+ :v(:$verbose));
+
+my @sorted = @ints.sort.squish;
+
+my %rank;
+my $rank = 0;
+
+for @sorted -> $val
+{
+ $rank++;
+
+ %rank{$val} = $rank;
+
+ say ": Int $val has rank $rank" if $verbose;
+}
+
+my @rank = @ints.map({ %rank{$_} });
+
+say "({ @rank.join(", ") })";
diff --git a/challenge-322/arne-sommer/raku/string-format b/challenge-322/arne-sommer/raku/string-format
new file mode 100755
index 0000000000..792cf9c53d
--- /dev/null
+++ b/challenge-322/arne-sommer/raku/string-format
@@ -0,0 +1,33 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($str is copy where $str.chars > 0,
+ Int $i where $i > 0,
+ :v(:$verbose));
+
+$str ~~ s:g/"-"//;
+
+say ": Dash free: $str" if $verbose;
+
+my @new;
+
+my $size = $str.chars % $i;
+
+if $size
+{
+ my $add = $str.substr(0, $size);
+ $str = $str.substr($size);
+
+ @new.push: $add;
+ say ": Short part: $add" if $verbose;
+}
+
+while $str.chars
+{
+ my $add = $str.substr(0, $i);
+ $str = $str.substr($i);
+
+ @new.push: $add;
+ say ": Full size part: $add" if $verbose;
+}
+
+say @new.join("-");
diff --git a/challenge-322/arne-sommer/raku/string-format-reverse b/challenge-322/arne-sommer/raku/string-format-reverse
new file mode 100755
index 0000000000..2719efa695
--- /dev/null
+++ b/challenge-322/arne-sommer/raku/string-format-reverse
@@ -0,0 +1,28 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($str is copy where $str.chars > 0,
+ Int $i where $i > 0,
+ :v(:$verbose));
+
+$str ~~ s:g/"-"//;
+
+say ": Dash free: $str" if $verbose;
+
+my @new;
+
+while $str.chars >= $i
+{
+ my $add = $str.substr($str.chars - $i);
+ $str = $str.substr(0, $str.chars - $i);
+
+ @new.unshift: $add;
+ say ": Full size part: $add" if $verbose;
+}
+
+if $str.chars
+{
+ @new.unshift: $str;
+ say ": Short part: $str" if $verbose;
+}
+
+say @new.join("-");