aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-142/polettix/blog.txt1
-rw-r--r--challenge-142/polettix/blog1.txt1
-rw-r--r--challenge-142/polettix/perl/ch-1.pl14
-rw-r--r--challenge-142/polettix/perl/ch-2.pl14
-rw-r--r--challenge-142/polettix/raku/ch-1.raku13
-rw-r--r--challenge-142/polettix/raku/ch-2.raku5
6 files changed, 48 insertions, 0 deletions
diff --git a/challenge-142/polettix/blog.txt b/challenge-142/polettix/blog.txt
new file mode 100644
index 0000000000..367b2231cf
--- /dev/null
+++ b/challenge-142/polettix/blog.txt
@@ -0,0 +1 @@
+https://github.polettix.it/ETOOBUSY/2021/12/08/pwc142-divisor-last-digit/
diff --git a/challenge-142/polettix/blog1.txt b/challenge-142/polettix/blog1.txt
new file mode 100644
index 0000000000..9a515bb9c9
--- /dev/null
+++ b/challenge-142/polettix/blog1.txt
@@ -0,0 +1 @@
+https://github.polettix.it/ETOOBUSY/2021/12/09/pwc142-sleep-sort/
diff --git a/challenge-142/polettix/perl/ch-1.pl b/challenge-142/polettix/perl/ch-1.pl
new file mode 100644
index 0000000000..3fd5d28ac3
--- /dev/null
+++ b/challenge-142/polettix/perl/ch-1.pl
@@ -0,0 +1,14 @@
+#!/usr/bin/env perl
+use v5.24;
+use warnings;
+use experimental 'signatures';
+no warnings 'experimental::signatures';
+
+sub divisors_for ($n) {
+ keys %{{map { $_ => 1, int($n / $_) => 1 } grep { !($n % $_) }
+ 1 .. sqrt($n)}};
+}
+
+my $m = shift // 24;
+my $n = shift // 2;
+say scalar [grep { substr($_, -1, 1) == $n } divisors_for($m)]->@*;
diff --git a/challenge-142/polettix/perl/ch-2.pl b/challenge-142/polettix/perl/ch-2.pl
new file mode 100644
index 0000000000..dbfb883488
--- /dev/null
+++ b/challenge-142/polettix/perl/ch-2.pl
@@ -0,0 +1,14 @@
+#!/usr/bin/env perl
+use v5.24;
+use warnings;
+use experimental 'signatures';
+no warnings 'experimental::signatures';
+
+for my $n (@ARGV) {
+ defined(my $pid = fork()) or die "fork(): $!\n";
+ next if $pid;
+ sleep $n;
+ say $n;
+ exit 0;
+}
+wait for 1 .. @ARGV;
diff --git a/challenge-142/polettix/raku/ch-1.raku b/challenge-142/polettix/raku/ch-1.raku
new file mode 100644
index 0000000000..25087256b2
--- /dev/null
+++ b/challenge-142/polettix/raku/ch-1.raku
@@ -0,0 +1,13 @@
+#!/usr/bin/env raku
+use v6;
+subset PosInt of Int where * > 0;
+subset PosDigit of Int where 0 < * <= 9;
+
+sub divisors-for (PosInt:D $n) {
+ (1 .. $n.sqrt.Int).grep({$n %% $_}).map({$_, ($n / $_).Int})
+ .flat.Set.keys;
+}
+
+sub MAIN (PosInt:D $m = 24, PosDigit:D $n = 2) {
+ divisors-for($m).grep({.substr(*-1, 1) == $n}).elems.put;
+}
diff --git a/challenge-142/polettix/raku/ch-2.raku b/challenge-142/polettix/raku/ch-2.raku
new file mode 100644
index 0000000000..0109ee4cd0
--- /dev/null
+++ b/challenge-142/polettix/raku/ch-2.raku
@@ -0,0 +1,5 @@
+#!/usr/bin/env raku
+use v6;
+sub MAIN (*@args) {
+ await @args.map: -> $x { Promise.in($x).then({$x.put}) }
+}