aboutsummaryrefslogtreecommitdiff
path: root/challenge-010/donald-hunter
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2019-05-29 12:54:25 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2019-05-29 12:54:25 +0100
commit7dfae77fc7b2c57754b94b1a9670cbd96ec8685d (patch)
treeb807342c99af09b9b6a57f2e84ab4c0bbc8b8d92 /challenge-010/donald-hunter
parent03d70cba4c4ebd24723e324064cc7760a2a2844b (diff)
downloadperlweeklychallenge-club-7dfae77fc7b2c57754b94b1a9670cbd96ec8685d.tar.gz
perlweeklychallenge-club-7dfae77fc7b2c57754b94b1a9670cbd96ec8685d.tar.bz2
perlweeklychallenge-club-7dfae77fc7b2c57754b94b1a9670cbd96ec8685d.zip
- Added solution by Donald Hunter.
Diffstat (limited to 'challenge-010/donald-hunter')
-rw-r--r--challenge-010/donald-hunter/README1
-rw-r--r--challenge-010/donald-hunter/blog.txt1
-rw-r--r--challenge-010/donald-hunter/perl6/ch-1.p623
3 files changed, 25 insertions, 0 deletions
diff --git a/challenge-010/donald-hunter/README b/challenge-010/donald-hunter/README
new file mode 100644
index 0000000000..2eef878f17
--- /dev/null
+++ b/challenge-010/donald-hunter/README
@@ -0,0 +1 @@
+Solutions by Donald Hunter.
diff --git a/challenge-010/donald-hunter/blog.txt b/challenge-010/donald-hunter/blog.txt
new file mode 100644
index 0000000000..e8adf39d31
--- /dev/null
+++ b/challenge-010/donald-hunter/blog.txt
@@ -0,0 +1 @@
+http://donaldh.wtf/2019/05/roman-numerals-in-perl-6/
diff --git a/challenge-010/donald-hunter/perl6/ch-1.p6 b/challenge-010/donald-hunter/perl6/ch-1.p6
new file mode 100644
index 0000000000..59ee6e1e2a
--- /dev/null
+++ b/challenge-010/donald-hunter/perl6/ch-1.p6
@@ -0,0 +1,23 @@
+#!/usr/bin/env perl6
+
+use v6;
+
+my %r2i =
+'I' => 1, 'IV' => 4, 'V' => 5, 'IX' => 9,
+'X' => 10, 'XL' => 40, 'L' => 50, 'XC' => 90,
+'C' => 100, 'D' => 500, 'CM' => 900, 'M' => 1000;
+
+multi MAIN('decode', Str $roman) {
+ say [+] %r2i{ $roman.split(%r2i.keys, :v).grep(*.Bool) }
+}
+
+my %i2r = %r2i.antipairs;
+
+multi MAIN('encode', Int $number is copy where 0 <= $number <= 3999) {
+ say [~] gather {
+ for %i2r.keys.sort: -* -> $radix {
+ take %i2r{$radix} x $number / $radix;
+ $number %= $radix;
+ }
+ }
+}