aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark A <andemark@a-iot1t.uch.ad.pvt>2021-07-27 06:40:29 -0600
committerMark A <andemark@a-iot1t.uch.ad.pvt>2021-07-27 06:40:29 -0600
commitc00ce8a40d4ce3f434c9042871e8b76db4a3aa70 (patch)
treec15dde92d74bf521f3de5c92ddfdf2283c36faec
parent1b4c6c186f95fe3c8bfe1851e9f2e1ce0bf9f213 (diff)
downloadperlweeklychallenge-club-c00ce8a40d4ce3f434c9042871e8b76db4a3aa70.tar.gz
perlweeklychallenge-club-c00ce8a40d4ce3f434c9042871e8b76db4a3aa70.tar.bz2
perlweeklychallenge-club-c00ce8a40d4ce3f434c9042871e8b76db4a3aa70.zip
Initial 123
-rw-r--r--challenge-123/mark-anderson/raku/ch-1.raku37
-rw-r--r--challenge-123/mark-anderson/raku/ch-2.raku29
2 files changed, 66 insertions, 0 deletions
diff --git a/challenge-123/mark-anderson/raku/ch-1.raku b/challenge-123/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..fbda93fbaa
--- /dev/null
+++ b/challenge-123/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,37 @@
+#!/usr/bin/env raku
+
+# https://www.geeksforgeeks.org/ugly-numbers/
+
+use Test;
+plan 4;
+
+is ugly(7), 8;
+is ugly(10), 12;
+is ugly(15), 24;
+is ugly(150), 5832;
+
+sub ugly($n where * >= 1)
+{
+ my ($i2, $i3, $i5);
+
+ $i2 = $i3 = $i5 = 0;
+
+ my @uglies = [1];
+
+ for 1..^$n
+ {
+ my $m2 = @uglies[$i2] * 2;
+ my $m3 = @uglies[$i3] * 3;
+ my $m5 = @uglies[$i5] * 5;
+
+ my $min = min($m2, $m3, $m5);
+
+ $i2++ if $min == $m2;
+ $i3++ if $min == $m3;
+ $i5++ if $min == $m5;
+
+ @uglies.push($min);
+ }
+
+ @uglies[*-1];
+}
diff --git a/challenge-123/mark-anderson/raku/ch-2.raku b/challenge-123/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..ea36c501a0
--- /dev/null
+++ b/challenge-123/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,29 @@
+#!/usr/bin/env raku
+
+use Test;
+plan 3;
+
+is square((10, 20), (20, 20), (20, 10), (10, 10)), 1;
+is square((12, 24), (16, 10), (20, 12), (18, 16)), 0;
+is square((10, 20), (10, -10), (-20, 20), (-20, -10)), 1;
+
+sub square(**@pts)
+{
+ @pts .= sort;
+
+ return + (diagonals-equal() and sides-equal());
+
+ sub diagonals-equal
+ {
+ [==] (@pts[3;0] - @pts[0;0])² + (@pts[3;1] - @pts[0;1])²,
+ (@pts[2;0] - @pts[1;0])² + (@pts[2;1] - @pts[1;1])²;
+ }
+
+ sub sides-equal
+ {
+ [==] (@pts[1;0] - @pts[0;0])² + (@pts[1;1] - @pts[0;1])²,
+ (@pts[2;0] - @pts[0;0])² + (@pts[2;1] - @pts[0;1])²,
+ (@pts[3;0] - @pts[2;0])² + (@pts[3;1] - @pts[2;1])²,
+ (@pts[3;0] - @pts[1;0])² + (@pts[3;1] - @pts[1;1])²;
+ }
+}