diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-08-15 16:24:24 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-08-15 16:24:24 +0100 |
| commit | fd8c25be2fbd843be6a4a2ca253773c56008cfd1 (patch) | |
| tree | e0cc672b4542cf847dcf6c76ab8d96220e1411dc /challenge-125 | |
| parent | 5079c9ed366d4c0705b259410477880f62fbcef3 (diff) | |
| parent | bc5ebe26f5e8921e985eea19d96ac717942adae3 (diff) | |
| download | perlweeklychallenge-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.raku | 33 |
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 +} |
