aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-02-11 13:51:55 +0000
committerGitHub <noreply@github.com>2020-02-11 13:51:55 +0000
commit9eb6ae9c914c7b124223503af91403a05e09b9bf (patch)
treeb96404da3c8c7f2bb1c41bf6790ce05db9942142
parentfd7439e90357db9143562ca8424bec011f9d5470 (diff)
parentf671db19fa23cd00175a6824d26bd281ac798ec2 (diff)
downloadperlweeklychallenge-club-9eb6ae9c914c7b124223503af91403a05e09b9bf.tar.gz
perlweeklychallenge-club-9eb6ae9c914c7b124223503af91403a05e09b9bf.tar.bz2
perlweeklychallenge-club-9eb6ae9c914c7b124223503af91403a05e09b9bf.zip
Merge pull request #1236 from holli-holzer/master
Solutions Markus Holzer
-rw-r--r--challenge-047/markus-holzer/ch-1.p628
-rw-r--r--challenge-047/markus-holzer/ch-2.p61
2 files changed, 29 insertions, 0 deletions
diff --git a/challenge-047/markus-holzer/ch-1.p6 b/challenge-047/markus-holzer/ch-1.p6
new file mode 100644
index 0000000000..fa17d7ad7c
--- /dev/null
+++ b/challenge-047/markus-holzer/ch-1.p6
@@ -0,0 +1,28 @@
+# Implements only the simple additive kind
+
+subset Roman of Str where * ~~ / ^ M* D* C * L* X* V* I* $ /;
+
+my @r = :M(1000), :D(500), :C(100), :L(50), :X(10), :V(5), :I(1);
+my %r = @r.Hash;
+
+sub r2d( $r is copy ) {
+ $r .= uc;
+ %r{$r} || [+] $r.comb.map({ %r{$_} });
+}
+
+sub d2r( $d is copy ) {
+ [~] gather while $d > 0 {
+ my ($k, $n) = @r.first( *.value <= $d ).kv;
+ take $k;
+ $d -= $n;
+ }
+}
+
+multi sub MAIN(Roman $n, '+', Roman $m) { say d2r( $n.&r2d + $m.&r2d ) }
+multi sub MAIN(Roman $n, '-', Roman $m) { say d2r( $n.&r2d - $m.&r2d ) }
+multi sub MAIN(Roman $n, "×", Roman $m) { say d2r( $n.&r2d × $m.&r2d ) }
+multi sub MAIN(Roman $n, '÷', Roman $m) { say d2r( ($n.&r2d ÷ $m.&r2d).Int ) }
+
+# ~\perlweeklychallenge-club\challenge-047\markus-holzer>6 ch-1.p6 L ÷ II
+# XXV
+#~\perlweeklychallenge-club\challenge-047\markus-holzer> \ No newline at end of file
diff --git a/challenge-047/markus-holzer/ch-2.p6 b/challenge-047/markus-holzer/ch-2.p6
new file mode 100644
index 0000000000..678b5bcd43
--- /dev/null
+++ b/challenge-047/markus-holzer/ch-2.p6
@@ -0,0 +1 @@
+.say for (100..*).grep({ $_ %% $_.comb[0,*-1].join })[^21]