aboutsummaryrefslogtreecommitdiff
path: root/challenge-123
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-07-27 23:55:55 +0100
committerGitHub <noreply@github.com>2021-07-27 23:55:55 +0100
commitec6fff85eec21a122fa9c6fc6f745781b5514295 (patch)
tree6e6b1a7e03686e19bfa58ab03c57fa46bd965adf /challenge-123
parent8d753dfb766f00bc2bc253ad111a1169bb68b3e7 (diff)
parentaa609a626af59795fc92e62bdbdb8fa446728602 (diff)
downloadperlweeklychallenge-club-ec6fff85eec21a122fa9c6fc6f745781b5514295.tar.gz
perlweeklychallenge-club-ec6fff85eec21a122fa9c6fc6f745781b5514295.tar.bz2
perlweeklychallenge-club-ec6fff85eec21a122fa9c6fc6f745781b5514295.zip
Merge pull request #4602 from stuart-little/stuart-little_123_raku
1st commit on 123_raku
Diffstat (limited to 'challenge-123')
-rwxr-xr-xchallenge-123/stuart-little/raku/ch-1.raku14
-rwxr-xr-xchallenge-123/stuart-little/raku/ch-2.raku21
2 files changed, 35 insertions, 0 deletions
diff --git a/challenge-123/stuart-little/raku/ch-1.raku b/challenge-123/stuart-little/raku/ch-1.raku
new file mode 100755
index 0000000000..1dee01f189
--- /dev/null
+++ b/challenge-123/stuart-little/raku/ch-1.raku
@@ -0,0 +1,14 @@
+#!/usr/bin/env raku
+use v6;
+
+# run as <script> <number $n> to return the first $n ugly numbers
+
+my %memo=((1,2,3,5) X=> 1).Hash;
+
+sub smth5p($n) { %memo{$n} && return True; return (my $den=(2,3,5).first({ $n %% $_ })) ?? (%memo{$n div $den} && (%memo{$n}=1).Bool || False) !! (False) }
+
+my ($count,$nr)=(0,0);
+while ($count < @*ARGS[0].Int) {
+ $nr+=1;
+ ($nr.&smth5p) && do { say $nr; $count+=1; };
+}
diff --git a/challenge-123/stuart-little/raku/ch-2.raku b/challenge-123/stuart-little/raku/ch-2.raku
new file mode 100755
index 0000000000..464bfb3b9e
--- /dev/null
+++ b/challenge-123/stuart-little/raku/ch-2.raku
@@ -0,0 +1,21 @@
+#!/usr/bin/env raku
+use v6;
+
+# run <script> <x1 y1 x2 y2 ..>
+
+sub sqDist($x1, $y1, $x2, $y2) {
+ return ($x2-$x1)**2 + ($y2-$y1)**2;
+}
+
+sub sqDistHash(@coords) {
+ my %h;
+ @coords.rotor(2).combinations(2).map({ sqDist(|$_.[0], |$_.[1]) }).map({ %h{$_}++ });
+ return %h;
+}
+
+sub isSq(@coords) {
+ my @distCounts = sqDistHash(@coords).values;
+ return (@distCounts.grep(2) && @distCounts.grep(4)).Bool;
+}
+
+say isSq(@*ARGS[0..7].map(*.Num)).Int;