diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-12-06 10:07:10 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-06 10:07:10 +0000 |
| commit | e17cc7bdd75de5683a999c8e4485ff713265dc0c (patch) | |
| tree | 62dc17e053c7ddc65be3b4de9f0c1cea483c8fc2 /challenge-089 | |
| parent | 540e83570516b0450fdf96b254bf0b7267caa0f0 (diff) | |
| parent | 6ab741e94a7cd108c75d9690658f1ff1d2888542 (diff) | |
| download | perlweeklychallenge-club-e17cc7bdd75de5683a999c8e4485ff713265dc0c.tar.gz perlweeklychallenge-club-e17cc7bdd75de5683a999c8e4485ff713265dc0c.tar.bz2 perlweeklychallenge-club-e17cc7bdd75de5683a999c8e4485ff713265dc0c.zip | |
Merge pull request #2913 from wambash/challenge-week-089
solutions week 089
Diffstat (limited to 'challenge-089')
| -rw-r--r-- | challenge-089/wambash/raku/ch-1.raku | 19 | ||||
| -rw-r--r-- | challenge-089/wambash/raku/ch-2.raku | 48 | ||||
| -rw-r--r-- | challenge-089/wambash/scala/ch-1.scala | 10 |
3 files changed, 77 insertions, 0 deletions
diff --git a/challenge-089/wambash/raku/ch-1.raku b/challenge-089/wambash/raku/ch-1.raku new file mode 100644 index 0000000000..a4aa89b21f --- /dev/null +++ b/challenge-089/wambash/raku/ch-1.raku @@ -0,0 +1,19 @@ +#!/usr/bin/env raku + +sub gcd-sum (UInt $n) { + 1..$n + andthen .combinations: 2 + andthen .map: { [gcd] $_ }\ + andthen .sum +} + +multi MAIN (UInt $n) { + say gcd-sum $n; +} + +multi MAIN (Bool :$test!) { + use Test; + is gcd-sum(3), 3; + is gcd-sum(4), 7; + done-testing; +} diff --git a/challenge-089/wambash/raku/ch-2.raku b/challenge-089/wambash/raku/ch-2.raku new file mode 100644 index 0000000000..568c081e10 --- /dev/null +++ b/challenge-089/wambash/raku/ch-2.raku @@ -0,0 +1,48 @@ +#!/usr/bin/env raku + +sub make-matrix15 ( +@ (\a, \b, \d, \e) ) { + my \c= 15 - (a+b); + my \f= 15 - (d+e); + my \g= 15 - (a+d); + my \h= 15 - (b+e); + my \i= 15 - (c+f); #=15- (g+h); + + ( + a, b, c; + d, e, f; + g, h, i; + ) +} + +sub is-matrix15-magical ( @ (*@m) ) { @m.Set eqv set(1..9)} + +multi MAIN () { + 1..9 + andthen .combinations(4).pick(*) + andthen .map: |*.permutations.pick(*) + andthen .map: &make-matrix15 + andthen .first: &is-matrix15-magical + andthen .fmt('%s', "\n") + andthen .say +} + +multi MAIN ( Bool :$test! ) { + use Test; + my @magical := ( + 5,3,7; + 1,8,6; + 9,4,2; + ); + my @not-magical := ( + 5,3,7; + 8,6,1; + 2,6,7; + ); + ok is-matrix15-magical @magical; + nok is-matrix15-magical @not-magical; + is-deeply make-matrix15(5,3,1,8), @magical; + is-deeply make-matrix15(5,3,8,6), @not-magical; + ok is-matrix15-magical make-matrix15 8,1,4,9; + nok is-matrix15-magical make-matrix15 8,1,4,3; + done-testing; +} diff --git a/challenge-089/wambash/scala/ch-1.scala b/challenge-089/wambash/scala/ch-1.scala new file mode 100644 index 0000000000..d4c177dd9b --- /dev/null +++ b/challenge-089/wambash/scala/ch-1.scala @@ -0,0 +1,10 @@ + +object gcdSum extends App { + + def gcd(a: Int, b: Int): Int = + if (b == 0) a else gcd(b, a % b) + + def gcdSum(r: Int): Int = (1 to r).combinations(2).map( x => gcd(x.head,x.last) ).sum + + println(gcdSum(args.head.toInt)) +} |
