diff options
| author | Jan Krňávek <Jan.Krnavek@gmail.com> | 2020-12-04 09:37:22 +0100 |
|---|---|---|
| committer | Jan Krňávek <Jan.Krnavek@gmail.com> | 2020-12-04 09:37:22 +0100 |
| commit | 6ab741e94a7cd108c75d9690658f1ff1d2888542 (patch) | |
| tree | 1326d78119bf2205e6450f4c18b4f787f587739e | |
| parent | d19b0f983bbefca06f6139624711c079ac18eb6e (diff) | |
| download | perlweeklychallenge-club-6ab741e94a7cd108c75d9690658f1ff1d2888542.tar.gz perlweeklychallenge-club-6ab741e94a7cd108c75d9690658f1ff1d2888542.tar.bz2 perlweeklychallenge-club-6ab741e94a7cd108c75d9690658f1ff1d2888542.zip | |
solutions week 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)) +} |
