From 09cb557d49b2058b90f91ccc58dfd65518c3ee2c Mon Sep 17 00:00:00 2001 From: Arne Sommer Date: Wed, 21 May 2025 22:10:16 +0200 Subject: Arne Sommer --- challenge-322/arne-sommer/blog.txt | 1 + challenge-322/arne-sommer/raku/ch-1.raku | 28 ++++++++++++++++++ challenge-322/arne-sommer/raku/ch-2.raku | 23 +++++++++++++++ challenge-322/arne-sommer/raku/rank-array | 23 +++++++++++++++ challenge-322/arne-sommer/raku/string-format | 33 ++++++++++++++++++++++ .../arne-sommer/raku/string-format-reverse | 28 ++++++++++++++++++ 6 files changed, 136 insertions(+) create mode 100644 challenge-322/arne-sommer/blog.txt create mode 100755 challenge-322/arne-sommer/raku/ch-1.raku create mode 100755 challenge-322/arne-sommer/raku/ch-2.raku create mode 100755 challenge-322/arne-sommer/raku/rank-array create mode 100755 challenge-322/arne-sommer/raku/string-format create mode 100755 challenge-322/arne-sommer/raku/string-format-reverse 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("-"); -- cgit