aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorarnesom <arne@bbop.org>2024-08-29 21:07:50 +0200
committerarnesom <arne@bbop.org>2024-08-29 21:07:50 +0200
commitad49926210a27fb2af8f35da8888b2037b986d40 (patch)
tree4e71fe665d454fecb13d25abb4f0932429bb407e
parent9d8b35adb9460155304b6fbaf2b2480c6c7fe723 (diff)
downloadperlweeklychallenge-club-ad49926210a27fb2af8f35da8888b2037b986d40.tar.gz
perlweeklychallenge-club-ad49926210a27fb2af8f35da8888b2037b986d40.tar.bz2
perlweeklychallenge-club-ad49926210a27fb2af8f35da8888b2037b986d40.zip
Arne Sommer
-rw-r--r--challenge-284/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-284/arne-sommer/raku/ch-1.raku5
-rwxr-xr-xchallenge-284/arne-sommer/raku/ch-2.raku20
-rwxr-xr-xchallenge-284/arne-sommer/raku/lucky-integer5
-rwxr-xr-xchallenge-284/arne-sommer/raku/lucky-integer-kv5
-rwxr-xr-xchallenge-284/arne-sommer/raku/relative-sort23
-rwxr-xr-xchallenge-284/arne-sommer/raku/relative-sort-kxxv20
7 files changed, 79 insertions, 0 deletions
diff --git a/challenge-284/arne-sommer/blog.txt b/challenge-284/arne-sommer/blog.txt
new file mode 100644
index 0000000000..8537192d7f
--- /dev/null
+++ b/challenge-284/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/relatively-lucky.html
diff --git a/challenge-284/arne-sommer/raku/ch-1.raku b/challenge-284/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..bd04faccf5
--- /dev/null
+++ b/challenge-284/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,5 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where all(@ints) ~~ Int && @ints.elems > 0);
+
+say @ints.Bag.grep({ $_.key == $_.value })>>.key.sort.tail // -1;
diff --git a/challenge-284/arne-sommer/raku/ch-2.raku b/challenge-284/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..19db6459c0
--- /dev/null
+++ b/challenge-284/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,20 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($list1, $list2);
+
+my @list1 = $list1.words;
+my @list2 = $list2.words;
+my $bag1 = @list1.BagHash;
+
+my @sorted;
+
+for @list2 -> $element
+{
+ @sorted.append: $element xx $bag1{$element};
+
+ $bag1{$element}:delete;
+}
+
+@sorted.append: $bag1.kxxv.sort;
+
+say "({ @sorted.join(", ") })";
diff --git a/challenge-284/arne-sommer/raku/lucky-integer b/challenge-284/arne-sommer/raku/lucky-integer
new file mode 100755
index 0000000000..bd04faccf5
--- /dev/null
+++ b/challenge-284/arne-sommer/raku/lucky-integer
@@ -0,0 +1,5 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where all(@ints) ~~ Int && @ints.elems > 0);
+
+say @ints.Bag.grep({ $_.key == $_.value })>>.key.sort.tail // -1;
diff --git a/challenge-284/arne-sommer/raku/lucky-integer-kv b/challenge-284/arne-sommer/raku/lucky-integer-kv
new file mode 100755
index 0000000000..0c17800437
--- /dev/null
+++ b/challenge-284/arne-sommer/raku/lucky-integer-kv
@@ -0,0 +1,5 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where all(@ints) ~~ Int && @ints.elems > 0);
+
+say @ints.Bag.grep({ [==] $_.kv })>>.key.sort.tail // -1;
diff --git a/challenge-284/arne-sommer/raku/relative-sort b/challenge-284/arne-sommer/raku/relative-sort
new file mode 100755
index 0000000000..a710d096d9
--- /dev/null
+++ b/challenge-284/arne-sommer/raku/relative-sort
@@ -0,0 +1,23 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($list1, $list2);
+
+my @list1 = $list1.words;
+my @list2 = $list2.words;
+my $bag1 = @list1.Bag;
+my %seen;
+my @sorted;
+
+for @list2 -> $element
+{
+ @sorted.append: $element xx $bag1{$element};
+ %seen{$element} = True;
+}
+
+for @list1.sort -> $element
+{
+ next if %seen{$element};
+ @sorted.push: $element;
+}
+
+say "({ @sorted.join(", ") })";
diff --git a/challenge-284/arne-sommer/raku/relative-sort-kxxv b/challenge-284/arne-sommer/raku/relative-sort-kxxv
new file mode 100755
index 0000000000..19db6459c0
--- /dev/null
+++ b/challenge-284/arne-sommer/raku/relative-sort-kxxv
@@ -0,0 +1,20 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($list1, $list2);
+
+my @list1 = $list1.words;
+my @list2 = $list2.words;
+my $bag1 = @list1.BagHash;
+
+my @sorted;
+
+for @list2 -> $element
+{
+ @sorted.append: $element xx $bag1{$element};
+
+ $bag1{$element}:delete;
+}
+
+@sorted.append: $bag1.kxxv.sort;
+
+say "({ @sorted.join(", ") })";