aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-321/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-321/arne-sommer/raku/backspace-compare13
-rwxr-xr-xchallenge-321/arne-sommer/raku/backspace-compare-fixed16
-rwxr-xr-xchallenge-321/arne-sommer/raku/ch-1.raku24
-rwxr-xr-xchallenge-321/arne-sommer/raku/ch-2.raku16
-rwxr-xr-xchallenge-321/arne-sommer/raku/distinct-average24
6 files changed, 94 insertions, 0 deletions
diff --git a/challenge-321/arne-sommer/blog.txt b/challenge-321/arne-sommer/blog.txt
new file mode 100644
index 0000000000..1e0d468cc8
--- /dev/null
+++ b/challenge-321/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/average-backspace.html
diff --git a/challenge-321/arne-sommer/raku/backspace-compare b/challenge-321/arne-sommer/raku/backspace-compare
new file mode 100755
index 0000000000..c8a72f039f
--- /dev/null
+++ b/challenge-321/arne-sommer/raku/backspace-compare
@@ -0,0 +1,13 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($str1 is copy,
+ $str2 is copy,
+ :v(:$verbose));
+
+$str1 ~~ s/.\#// while $str1 ~~ /.\#/;
+$str2 ~~ s/.\#// while $str2 ~~ /.\#/;
+
+say ": Str1:$str1\n: Str2:$str2" if $verbose;
+
+say ($str1 eq $str2);
+
diff --git a/challenge-321/arne-sommer/raku/backspace-compare-fixed b/challenge-321/arne-sommer/raku/backspace-compare-fixed
new file mode 100755
index 0000000000..2d88101e0c
--- /dev/null
+++ b/challenge-321/arne-sommer/raku/backspace-compare-fixed
@@ -0,0 +1,16 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($str1 is copy,
+ $str2 is copy,
+ :v(:$verbose));
+
+$str1 ~~ s/.\#// while $str1 ~~ /.\#/;
+$str2 ~~ s/.\#// while $str2 ~~ /.\#/;
+
+$str1 = "" if $str1 eq "#";
+$str2 = "" if $str2 eq "#";
+
+say ": Str1:$str1\n: Str2:$str2" if $verbose;
+
+say ($str1 eq $str2);
+
diff --git a/challenge-321/arne-sommer/raku/ch-1.raku b/challenge-321/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..ffb4174bcf
--- /dev/null
+++ b/challenge-321/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,24 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where @ints.elems > 1
+ && @ints.elems %% 2
+ && all(@ints) ~~ Int,
+ :v(:$verbose));
+
+my @sorted = @ints.sort;
+my @avg;
+
+while @sorted
+{
+ my $low = @sorted.shift;
+ my $high = @sorted.pop;
+ my $avg = ($low + $high) / 2;
+
+ @avg.push: $avg;
+
+ say ": Low:$low, High:$high, Avg: $avg, Todo: @sorted[]" if $verbose;
+}
+
+say ": Avg values:{ @avg.join(",") }" if $verbose;
+
+say @avg.unique.elems; \ No newline at end of file
diff --git a/challenge-321/arne-sommer/raku/ch-2.raku b/challenge-321/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..2d88101e0c
--- /dev/null
+++ b/challenge-321/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,16 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($str1 is copy,
+ $str2 is copy,
+ :v(:$verbose));
+
+$str1 ~~ s/.\#// while $str1 ~~ /.\#/;
+$str2 ~~ s/.\#// while $str2 ~~ /.\#/;
+
+$str1 = "" if $str1 eq "#";
+$str2 = "" if $str2 eq "#";
+
+say ": Str1:$str1\n: Str2:$str2" if $verbose;
+
+say ($str1 eq $str2);
+
diff --git a/challenge-321/arne-sommer/raku/distinct-average b/challenge-321/arne-sommer/raku/distinct-average
new file mode 100755
index 0000000000..ffb4174bcf
--- /dev/null
+++ b/challenge-321/arne-sommer/raku/distinct-average
@@ -0,0 +1,24 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where @ints.elems > 1
+ && @ints.elems %% 2
+ && all(@ints) ~~ Int,
+ :v(:$verbose));
+
+my @sorted = @ints.sort;
+my @avg;
+
+while @sorted
+{
+ my $low = @sorted.shift;
+ my $high = @sorted.pop;
+ my $avg = ($low + $high) / 2;
+
+ @avg.push: $avg;
+
+ say ": Low:$low, High:$high, Avg: $avg, Todo: @sorted[]" if $verbose;
+}
+
+say ": Avg values:{ @avg.join(",") }" if $verbose;
+
+say @avg.unique.elems; \ No newline at end of file