aboutsummaryrefslogtreecommitdiff
path: root/challenge-089
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-12-06 10:07:10 +0000
committerGitHub <noreply@github.com>2020-12-06 10:07:10 +0000
commite17cc7bdd75de5683a999c8e4485ff713265dc0c (patch)
tree62dc17e053c7ddc65be3b4de9f0c1cea483c8fc2 /challenge-089
parent540e83570516b0450fdf96b254bf0b7267caa0f0 (diff)
parent6ab741e94a7cd108c75d9690658f1ff1d2888542 (diff)
downloadperlweeklychallenge-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.raku19
-rw-r--r--challenge-089/wambash/raku/ch-2.raku48
-rw-r--r--challenge-089/wambash/scala/ch-1.scala10
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))
+}