diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-02-11 13:51:55 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-02-11 13:51:55 +0000 |
| commit | 9eb6ae9c914c7b124223503af91403a05e09b9bf (patch) | |
| tree | b96404da3c8c7f2bb1c41bf6790ce05db9942142 | |
| parent | fd7439e90357db9143562ca8424bec011f9d5470 (diff) | |
| parent | f671db19fa23cd00175a6824d26bd281ac798ec2 (diff) | |
| download | perlweeklychallenge-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.p6 | 28 | ||||
| -rw-r--r-- | challenge-047/markus-holzer/ch-2.p6 | 1 |
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] |
