diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-07-27 23:55:55 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-07-27 23:55:55 +0100 |
| commit | ec6fff85eec21a122fa9c6fc6f745781b5514295 (patch) | |
| tree | 6e6b1a7e03686e19bfa58ab03c57fa46bd965adf /challenge-123 | |
| parent | 8d753dfb766f00bc2bc253ad111a1169bb68b3e7 (diff) | |
| parent | aa609a626af59795fc92e62bdbdb8fa446728602 (diff) | |
| download | perlweeklychallenge-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-x | challenge-123/stuart-little/raku/ch-1.raku | 14 | ||||
| -rwxr-xr-x | challenge-123/stuart-little/raku/ch-2.raku | 21 |
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; |
