aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorarnesom <arne@bbop.org>2024-05-11 20:59:45 +0200
committerarnesom <arne@bbop.org>2024-05-11 20:59:45 +0200
commite3ca64c61c8818bd8f370981fe2099ad23145a28 (patch)
tree9afca64b472557b10d9ae46e07ea1fc8a9944243
parentb2998ca96896e0a89935bb9b87f86ea1621e2f09 (diff)
downloadperlweeklychallenge-club-e3ca64c61c8818bd8f370981fe2099ad23145a28.tar.gz
perlweeklychallenge-club-e3ca64c61c8818bd8f370981fe2099ad23145a28.tar.bz2
perlweeklychallenge-club-e3ca64c61c8818bd8f370981fe2099ad23145a28.zip
Arne Sommer
-rw-r--r--challenge-268/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-268/arne-sommer/raku/ch-1.raku18
-rwxr-xr-xchallenge-268/arne-sommer/raku/ch-2.raku20
-rwxr-xr-xchallenge-268/arne-sommer/raku/magic-number18
-rwxr-xr-xchallenge-268/arne-sommer/raku/number-game20
5 files changed, 77 insertions, 0 deletions
diff --git a/challenge-268/arne-sommer/blog.txt b/challenge-268/arne-sommer/blog.txt
new file mode 100644
index 0000000000..6f72301b3e
--- /dev/null
+++ b/challenge-268/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/numerous-numbers.html
diff --git a/challenge-268/arne-sommer/raku/ch-1.raku b/challenge-268/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..c057392b31
--- /dev/null
+++ b/challenge-268/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,18 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($x, $y, :v(:$verbose));
+
+my @x = $x.words>>.Int.sort; ## Numeric
+my @y = $y.words>>.Int.sort;
+
+die "Not the same length" unless @x.elems == @y.elems;
+
+my @pairs = @x Z @y;
+
+say ":Pairs: { @pairs.raku }" if $verbose;
+
+my @diff = @pairs.map({ $_[0] - $_[1] });
+
+say ":Diff: { @diff.join(", ") }" if $verbose;
+
+say ( [==] @diff ) ?? @diff[0].abs !! 'error';
diff --git a/challenge-268/arne-sommer/raku/ch-2.raku b/challenge-268/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..851142ccff
--- /dev/null
+++ b/challenge-268/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,20 @@
+#! /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 @new;
+
+while @sorted
+{
+ print ":Sorted: { @sorted.join(",")}" if $verbose;
+
+ my $a = @sorted.shift;
+ my $b = @sorted.shift;
+
+ say " -> pick $a,$b -> add $b,$a" if $verbose;
+
+ @new.append: $b, $a;
+}
+
+say "({ @new.join(", ") })";
diff --git a/challenge-268/arne-sommer/raku/magic-number b/challenge-268/arne-sommer/raku/magic-number
new file mode 100755
index 0000000000..c057392b31
--- /dev/null
+++ b/challenge-268/arne-sommer/raku/magic-number
@@ -0,0 +1,18 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($x, $y, :v(:$verbose));
+
+my @x = $x.words>>.Int.sort; ## Numeric
+my @y = $y.words>>.Int.sort;
+
+die "Not the same length" unless @x.elems == @y.elems;
+
+my @pairs = @x Z @y;
+
+say ":Pairs: { @pairs.raku }" if $verbose;
+
+my @diff = @pairs.map({ $_[0] - $_[1] });
+
+say ":Diff: { @diff.join(", ") }" if $verbose;
+
+say ( [==] @diff ) ?? @diff[0].abs !! 'error';
diff --git a/challenge-268/arne-sommer/raku/number-game b/challenge-268/arne-sommer/raku/number-game
new file mode 100755
index 0000000000..851142ccff
--- /dev/null
+++ b/challenge-268/arne-sommer/raku/number-game
@@ -0,0 +1,20 @@
+#! /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 @new;
+
+while @sorted
+{
+ print ":Sorted: { @sorted.join(",")}" if $verbose;
+
+ my $a = @sorted.shift;
+ my $b = @sorted.shift;
+
+ say " -> pick $a,$b -> add $b,$a" if $verbose;
+
+ @new.append: $b, $a;
+}
+
+say "({ @new.join(", ") })";