aboutsummaryrefslogtreecommitdiff
path: root/challenge-142
diff options
context:
space:
mode:
authorarnesom <arne@bbop.org>2021-12-12 20:32:44 +0100
committerarnesom <arne@bbop.org>2021-12-12 20:32:44 +0100
commita718547851575dd341cde25d6914d3ac5a182c87 (patch)
tree45b30746eec3e57b12d1b861ee3370f4b1196d46 /challenge-142
parentafe0e37af2d810d218db86d0b44b2493545e8af2 (diff)
downloadperlweeklychallenge-club-a718547851575dd341cde25d6914d3ac5a182c87.tar.gz
perlweeklychallenge-club-a718547851575dd341cde25d6914d3ac5a182c87.tar.bz2
perlweeklychallenge-club-a718547851575dd341cde25d6914d3ac5a182c87.zip
Arne Sommer
Diffstat (limited to 'challenge-142')
-rw-r--r--challenge-142/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-142/arne-sommer/raku/ch-1.raku29
-rwxr-xr-xchallenge-142/arne-sommer/raku/ch-2.raku13
-rwxr-xr-xchallenge-142/arne-sommer/raku/dld29
-rwxr-xr-xchallenge-142/arne-sommer/raku/sleep-sort13
-rwxr-xr-xchallenge-142/arne-sommer/raku/sleep-sort-milliseconds13
6 files changed, 98 insertions, 0 deletions
diff --git a/challenge-142/arne-sommer/blog.txt b/challenge-142/arne-sommer/blog.txt
new file mode 100644
index 0000000000..550bab55e5
--- /dev/null
+++ b/challenge-142/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/last-sleep.html
diff --git a/challenge-142/arne-sommer/raku/ch-1.raku b/challenge-142/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..e9a2d06131
--- /dev/null
+++ b/challenge-142/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,29 @@
+#! /usr/bin/env raku
+
+subset PosInt of Int where * >= 1;
+subset Digit of Int where * == any(0..9);
+
+unit sub MAIN (PosInt $m, Digit $n, :v(:$verbose));
+
+my @divisors = divisors($m);
+my @result = @divisors.grep({ /$n$/ }) ;
+
+say ": - Ending with $n: { @result.join(", ") }" if $verbose;
+
+say @result.elems;
+
+sub divisors ($number, :$not-self, :$not-one)
+{
+ my @divisors;
+
+ for ($not-one ?? 2 !! 1) .. $number/2 -> $candidate
+ {
+ @divisors.push: $candidate if $number %% $candidate;
+ }
+
+ @divisors.push: $number unless $not-self;
+
+ say ": $number has { @divisors.elems } divisors: { @divisors.join(", ") }" if $verbose;
+
+ return @divisors;
+}
diff --git a/challenge-142/arne-sommer/raku/ch-2.raku b/challenge-142/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..9361ddab8f
--- /dev/null
+++ b/challenge-142/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,13 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@values where @values.elems > 0, :v(:$verbose));
+
+my @promises;
+
+for @values -> $value
+{
+ next unless $value ~~ Numeric;
+ @promises.push: Promise.in($value).then: { say $value; };
+}
+
+await @promises;
diff --git a/challenge-142/arne-sommer/raku/dld b/challenge-142/arne-sommer/raku/dld
new file mode 100755
index 0000000000..e9a2d06131
--- /dev/null
+++ b/challenge-142/arne-sommer/raku/dld
@@ -0,0 +1,29 @@
+#! /usr/bin/env raku
+
+subset PosInt of Int where * >= 1;
+subset Digit of Int where * == any(0..9);
+
+unit sub MAIN (PosInt $m, Digit $n, :v(:$verbose));
+
+my @divisors = divisors($m);
+my @result = @divisors.grep({ /$n$/ }) ;
+
+say ": - Ending with $n: { @result.join(", ") }" if $verbose;
+
+say @result.elems;
+
+sub divisors ($number, :$not-self, :$not-one)
+{
+ my @divisors;
+
+ for ($not-one ?? 2 !! 1) .. $number/2 -> $candidate
+ {
+ @divisors.push: $candidate if $number %% $candidate;
+ }
+
+ @divisors.push: $number unless $not-self;
+
+ say ": $number has { @divisors.elems } divisors: { @divisors.join(", ") }" if $verbose;
+
+ return @divisors;
+}
diff --git a/challenge-142/arne-sommer/raku/sleep-sort b/challenge-142/arne-sommer/raku/sleep-sort
new file mode 100755
index 0000000000..9361ddab8f
--- /dev/null
+++ b/challenge-142/arne-sommer/raku/sleep-sort
@@ -0,0 +1,13 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@values where @values.elems > 0, :v(:$verbose));
+
+my @promises;
+
+for @values -> $value
+{
+ next unless $value ~~ Numeric;
+ @promises.push: Promise.in($value).then: { say $value; };
+}
+
+await @promises;
diff --git a/challenge-142/arne-sommer/raku/sleep-sort-milliseconds b/challenge-142/arne-sommer/raku/sleep-sort-milliseconds
new file mode 100755
index 0000000000..6eee23ede6
--- /dev/null
+++ b/challenge-142/arne-sommer/raku/sleep-sort-milliseconds
@@ -0,0 +1,13 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@values where @values.elems > 0, :v(:$verbose));
+
+my @promises;
+
+for @values -> $value
+{
+ next unless $value ~~ Numeric;
+ @promises.push: Promise.in($value / 1000).then: { say $value; };
+}
+
+await @promises;