aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorarnesom <arne@bbop.org>2022-07-10 17:09:24 +0200
committerarnesom <arne@bbop.org>2022-07-10 17:09:24 +0200
commita031f2668d2f73c5079d6d74e33d8cc9e16cae54 (patch)
treedbcfc2eeb077a356e3cbc4a1f397dafc162cbc08
parentb3458cb9bb2fbd3dd6aa1652eab5e52c1385275e (diff)
downloadperlweeklychallenge-club-a031f2668d2f73c5079d6d74e33d8cc9e16cae54.tar.gz
perlweeklychallenge-club-a031f2668d2f73c5079d6d74e33d8cc9e16cae54.tar.bz2
perlweeklychallenge-club-a031f2668d2f73c5079d6d74e33d8cc9e16cae54.zip
Arne Sommer
-rw-r--r--challenge-172/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-172/arne-sommer/raku/ch-1.raku16
-rwxr-xr-xchallenge-172/arne-sommer/raku/ch-2.raku41
-rwxr-xr-xchallenge-172/arne-sommer/raku/five-number-summary41
-rwxr-xr-xchallenge-172/arne-sommer/raku/prime-partition16
5 files changed, 115 insertions, 0 deletions
diff --git a/challenge-172/arne-sommer/blog.txt b/challenge-172/arne-sommer/blog.txt
new file mode 100644
index 0000000000..51ef2f95ad
--- /dev/null
+++ b/challenge-172/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/primary-five.html
diff --git a/challenge-172/arne-sommer/raku/ch-1.raku b/challenge-172/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..441f97e603
--- /dev/null
+++ b/challenge-172/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,16 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Int $m where $m > 0, Int $n where $n > 0, :a($all));
+
+my $primes := (2 .. $m).grep( *.is-prime );
+
+for $primes.combinations($n) -> @combination
+{
+ my $sum = @combination.sum;
+
+ if $sum == $m
+ {
+ say @combination.join(", ");
+ last unless $all;
+ }
+}
diff --git a/challenge-172/arne-sommer/raku/ch-2.raku b/challenge-172/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..e8fbf487db
--- /dev/null
+++ b/challenge-172/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,41 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@integers where all(@integers) ~~ Int, :v($verbose));
+
+my @sorted = @integers>>.Int.sort;
+
+say ": Sorted: @sorted[]" if $verbose;
+
+my @fns =
+(
+ @sorted[0],
+ lower_quartile(@sorted),
+ median(@sorted),
+ upper_quartile(@sorted),
+ @sorted[*-1]
+);
+
+sub median (@values)
+{
+ my $count = @values.elems;
+
+ return @values[$count/2] if $count % 2;
+
+ return (@values[$count/2 -0.5] + @values[$count/2 +0.5]) / 2;
+}
+
+sub lower_quartile (@values)
+{
+ my $count = @values.elems;
+
+ return median(@values[0 .. $count/2 -0.5]);
+}
+
+sub upper_quartile (@values)
+{
+ my $count = @values.elems;
+
+ return median(@values[$count/2 .. *]);
+}
+
+say @fns.join(", ");
diff --git a/challenge-172/arne-sommer/raku/five-number-summary b/challenge-172/arne-sommer/raku/five-number-summary
new file mode 100755
index 0000000000..e8fbf487db
--- /dev/null
+++ b/challenge-172/arne-sommer/raku/five-number-summary
@@ -0,0 +1,41 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@integers where all(@integers) ~~ Int, :v($verbose));
+
+my @sorted = @integers>>.Int.sort;
+
+say ": Sorted: @sorted[]" if $verbose;
+
+my @fns =
+(
+ @sorted[0],
+ lower_quartile(@sorted),
+ median(@sorted),
+ upper_quartile(@sorted),
+ @sorted[*-1]
+);
+
+sub median (@values)
+{
+ my $count = @values.elems;
+
+ return @values[$count/2] if $count % 2;
+
+ return (@values[$count/2 -0.5] + @values[$count/2 +0.5]) / 2;
+}
+
+sub lower_quartile (@values)
+{
+ my $count = @values.elems;
+
+ return median(@values[0 .. $count/2 -0.5]);
+}
+
+sub upper_quartile (@values)
+{
+ my $count = @values.elems;
+
+ return median(@values[$count/2 .. *]);
+}
+
+say @fns.join(", ");
diff --git a/challenge-172/arne-sommer/raku/prime-partition b/challenge-172/arne-sommer/raku/prime-partition
new file mode 100755
index 0000000000..441f97e603
--- /dev/null
+++ b/challenge-172/arne-sommer/raku/prime-partition
@@ -0,0 +1,16 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Int $m where $m > 0, Int $n where $n > 0, :a($all));
+
+my $primes := (2 .. $m).grep( *.is-prime );
+
+for $primes.combinations($n) -> @combination
+{
+ my $sum = @combination.sum;
+
+ if $sum == $m
+ {
+ say @combination.join(", ");
+ last unless $all;
+ }
+}