aboutsummaryrefslogtreecommitdiff
path: root/challenge-125
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-08-15 16:24:24 +0100
committerGitHub <noreply@github.com>2021-08-15 16:24:24 +0100
commitfd8c25be2fbd843be6a4a2ca253773c56008cfd1 (patch)
treee0cc672b4542cf847dcf6c76ab8d96220e1411dc /challenge-125
parent5079c9ed366d4c0705b259410477880f62fbcef3 (diff)
parentbc5ebe26f5e8921e985eea19d96ac717942adae3 (diff)
downloadperlweeklychallenge-club-fd8c25be2fbd843be6a4a2ca253773c56008cfd1.tar.gz
perlweeklychallenge-club-fd8c25be2fbd843be6a4a2ca253773c56008cfd1.tar.bz2
perlweeklychallenge-club-fd8c25be2fbd843be6a4a2ca253773c56008cfd1.zip
Merge pull request #4713 from wambash/challenge-week-125
solution week 125-1
Diffstat (limited to 'challenge-125')
-rw-r--r--challenge-125/wambash/raku/ch-1.raku33
1 files changed, 33 insertions, 0 deletions
diff --git a/challenge-125/wambash/raku/ch-1.raku b/challenge-125/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..5abb5ade24
--- /dev/null
+++ b/challenge-125/wambash/raku/ch-1.raku
@@ -0,0 +1,33 @@
+#!/usr/bin/env raku
+
+constant @next-candidates :=
+ (( 1, 2, 2),(-2,-1,-2),(2,2,3)),
+ (( 1, 2, 2),( 2, 1, 2),(2,2,3)),
+ ((-1,-2,-2),( 2, 1, 2),(2,2,3)),
+;
+
+sub next-level (@a,:$n) {
+ @a
+ andthen @next-candidates.map: $_ «*« *
+ andthen .map: { [Z+] $_ }\
+ andthen .map: *.cache
+ andthen |.grep: { .any ≤ $n }
+}
+
+sub pythagorean-triples ($n) { # only primitive
+ ((3,4,5),), { .map: &next-level.assuming(:$n) } ... :!elems
+ andthen .map: |*.grep: $n == *.any # by `$n %% *.any` you could have generators for all Pythagorean-triples
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is pythagorean-triples( 5), ((3,4,5),(5,12,13));
+ is pythagorean-triples(13), ((5,12,13),(13,84,85));
+ is pythagorean-triples( 1), ();
+ is pythagorean-triples(65), ((33,56,65),(65,72,97),(63,16,65),(65,2112,2113));
+ done-testing;
+}
+
+multi MAIN ($n=420) {
+ say pythagorean-triples($n) || -1
+}