aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorarnesom <arne@bbop.org>2023-08-05 22:02:12 +0200
committerarnesom <arne@bbop.org>2023-08-05 22:02:12 +0200
commitc05fa41fd97564d5823f0b0fb64a27f2e0430bf6 (patch)
treeaed7241dc440bac901c783d4ca493cc58c878fd2
parent10ec616c81e28fa2bdd7230718941fc16f28d49a (diff)
downloadperlweeklychallenge-club-c05fa41fd97564d5823f0b0fb64a27f2e0430bf6.tar.gz
perlweeklychallenge-club-c05fa41fd97564d5823f0b0fb64a27f2e0430bf6.tar.bz2
perlweeklychallenge-club-c05fa41fd97564d5823f0b0fb64a27f2e0430bf6.zip
Arne Sommer
-rw-r--r--challenge-228/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-228/arne-sommer/raku/ch-1.raku5
-rwxr-xr-xchallenge-228/arne-sommer/raku/ch-2.raku15
-rwxr-xr-xchallenge-228/arne-sommer/raku/empty-array15
-rwxr-xr-xchallenge-228/arne-sommer/raku/empty-array-verbose25
-rwxr-xr-xchallenge-228/arne-sommer/raku/unique-sum5
-rwxr-xr-xchallenge-228/arne-sommer/raku/unique-sum-bag9
-rwxr-xr-xchallenge-228/arne-sommer/raku/unique-sum-set9
8 files changed, 84 insertions, 0 deletions
diff --git a/challenge-228/arne-sommer/blog.txt b/challenge-228/arne-sommer/blog.txt
new file mode 100644
index 0000000000..b5b9cf7840
--- /dev/null
+++ b/challenge-228/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/uniquely-empty.html
diff --git a/challenge-228/arne-sommer/raku/ch-1.raku b/challenge-228/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..a97831848e
--- /dev/null
+++ b/challenge-228/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,5 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@int where @int.elems > 0 && all(@int) ~~ Int);
+
+say @int.Bag.grep( *.value == 1 ).map( *.key ).sum;
diff --git a/challenge-228/arne-sommer/raku/ch-2.raku b/challenge-228/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..3bebef5fb2
--- /dev/null
+++ b/challenge-228/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,15 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@int where @int.elems > 0 && all(@int) ~~ Int && @int.elems == @int.unique.elems);
+
+my $operations = 0;
+
+while @int.elems
+{
+ my $first = @int.shift;
+ $operations++;
+
+ @int.push: $first if $first > @int.min;
+}
+
+say $operations;
diff --git a/challenge-228/arne-sommer/raku/empty-array b/challenge-228/arne-sommer/raku/empty-array
new file mode 100755
index 0000000000..3bebef5fb2
--- /dev/null
+++ b/challenge-228/arne-sommer/raku/empty-array
@@ -0,0 +1,15 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@int where @int.elems > 0 && all(@int) ~~ Int && @int.elems == @int.unique.elems);
+
+my $operations = 0;
+
+while @int.elems
+{
+ my $first = @int.shift;
+ $operations++;
+
+ @int.push: $first if $first > @int.min;
+}
+
+say $operations;
diff --git a/challenge-228/arne-sommer/raku/empty-array-verbose b/challenge-228/arne-sommer/raku/empty-array-verbose
new file mode 100755
index 0000000000..a7f0d607eb
--- /dev/null
+++ b/challenge-228/arne-sommer/raku/empty-array-verbose
@@ -0,0 +1,25 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@int where @int.elems > 0 && all(@int) ~~ Int && @int.elems == @int.unique.elems, :v(:$verbose));
+
+my $operations = 0;
+
+while @int.elems
+{
+ my $first = @int.shift;
+ $operations++;
+
+ if $first > @int.min
+ {
+ @int.push: $first;
+
+ say ": Operation $operations: move $first to end: ({ @int.join(", ") })" if $verbose;
+ }
+
+ elsif $verbose
+ {
+ say ": Operation $operations: remove element $first: ({ @int.join(", ") })";
+ }
+}
+
+say $operations;
diff --git a/challenge-228/arne-sommer/raku/unique-sum b/challenge-228/arne-sommer/raku/unique-sum
new file mode 100755
index 0000000000..a97831848e
--- /dev/null
+++ b/challenge-228/arne-sommer/raku/unique-sum
@@ -0,0 +1,5 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@int where @int.elems > 0 && all(@int) ~~ Int);
+
+say @int.Bag.grep( *.value == 1 ).map( *.key ).sum;
diff --git a/challenge-228/arne-sommer/raku/unique-sum-bag b/challenge-228/arne-sommer/raku/unique-sum-bag
new file mode 100755
index 0000000000..ec7d31d067
--- /dev/null
+++ b/challenge-228/arne-sommer/raku/unique-sum-bag
@@ -0,0 +1,9 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@int where @int.elems > 0 && all(@int) ~~ Int, :v(:$verbose));
+
+my @unique = @int.Bag.grep( *.value == 1 ).map( *.key );
+
+say ": Unique: @unique[]" if $verbose;
+
+say @unique.sum;
diff --git a/challenge-228/arne-sommer/raku/unique-sum-set b/challenge-228/arne-sommer/raku/unique-sum-set
new file mode 100755
index 0000000000..54a003f918
--- /dev/null
+++ b/challenge-228/arne-sommer/raku/unique-sum-set
@@ -0,0 +1,9 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@int where @int.elems > 0 && all(@int) ~~ Int, :v(:$verbose));
+
+my @unique = (@int ∖ @int.repeated).keys;
+
+say ": Unique: @unique[]" if $verbose;
+
+say @unique.sum;