aboutsummaryrefslogtreecommitdiff
path: root/challenge-047
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-02-16 01:36:22 +0000
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-02-16 01:36:22 +0000
commitb7b5ae5fcc788d10e6a1cd0c4b59ce4b1c6b5b3d (patch)
treeb8317bd6bc3bd7dcc0a9025afff5c621be27a3e1 /challenge-047
parent5e0a1807a04e0f144da845c5c9fefed244cbc074 (diff)
downloadperlweeklychallenge-club-b7b5ae5fcc788d10e6a1cd0c4b59ce4b1c6b5b3d.tar.gz
perlweeklychallenge-club-b7b5ae5fcc788d10e6a1cd0c4b59ce4b1c6b5b3d.tar.bz2
perlweeklychallenge-club-b7b5ae5fcc788d10e6a1cd0c4b59ce4b1c6b5b3d.zip
- Added solutions Arne Sommer.
Diffstat (limited to 'challenge-047')
-rw-r--r--challenge-047/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-047/arne-sommer/raku/ch-1.p619
-rwxr-xr-xchallenge-047/arne-sommer/raku/ch-2.p65
-rwxr-xr-xchallenge-047/arne-sommer/raku/gapful-gather11
-rwxr-xr-xchallenge-047/arne-sommer/raku/gapful-gather-sub18
-rwxr-xr-xchallenge-047/arne-sommer/raku/gapful-grep5
-rwxr-xr-xchallenge-047/arne-sommer/raku/oo-test21
-rwxr-xr-xchallenge-047/arne-sommer/raku/roman-calculator-given19
-rwxr-xr-xchallenge-047/arne-sommer/raku/roman-calculator-given-turbo19
-rwxr-xr-xchallenge-047/arne-sommer/raku/roman-calculator-multi30
10 files changed, 148 insertions, 0 deletions
diff --git a/challenge-047/arne-sommer/blog.txt b/challenge-047/arne-sommer/blog.txt
new file mode 100644
index 0000000000..5d1f0c385f
--- /dev/null
+++ b/challenge-047/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/roman-gap.html
diff --git a/challenge-047/arne-sommer/raku/ch-1.p6 b/challenge-047/arne-sommer/raku/ch-1.p6
new file mode 100755
index 0000000000..3d3b3bea1b
--- /dev/null
+++ b/challenge-047/arne-sommer/raku/ch-1.p6
@@ -0,0 +1,19 @@
+#! /usr/bin/env raku
+
+use lib "lib";
+
+use Number::Roman :to, :from;
+
+unit sub MAIN (Str $first, Str $operator, Str $second);
+
+my $f = from-roman($first);
+my $s = from-roman($second);
+
+given $operator
+{
+ when '+' { say to-roman($f + $s) };
+ when '-' { say to-roman($f - $s) };
+ when 'x' { say to-roman($f * $s) };
+ when '*' { say to-roman($f * $s) };
+ when '/' { say to-roman(Int($f) / Int($s)) };
+}
diff --git a/challenge-047/arne-sommer/raku/ch-2.p6 b/challenge-047/arne-sommer/raku/ch-2.p6
new file mode 100755
index 0000000000..9baeef3d5a
--- /dev/null
+++ b/challenge-047/arne-sommer/raku/ch-2.p6
@@ -0,0 +1,5 @@
+#! /usr/bin/env raku
+
+my $gapful := (100 .. *).grep( { $_ %% ( .substr(0,1) ~ .substr(*-1,1) ) });
+
+say "First 20 Gapful numbers: { $gapful[^20].join(',') }.";
diff --git a/challenge-047/arne-sommer/raku/gapful-gather b/challenge-047/arne-sommer/raku/gapful-gather
new file mode 100755
index 0000000000..07918530f7
--- /dev/null
+++ b/challenge-047/arne-sommer/raku/gapful-gather
@@ -0,0 +1,11 @@
+#! /usr/bin/env raku
+
+my $gapful := gather
+{
+ for 100 .. *
+ {
+ take $_ if $_ %% ( .substr(0,1) ~ .substr(*-1,1) );
+ }
+}
+
+say "First 20 Gapful numbers: { $gapful[^20].join(',') }.";
diff --git a/challenge-047/arne-sommer/raku/gapful-gather-sub b/challenge-047/arne-sommer/raku/gapful-gather-sub
new file mode 100755
index 0000000000..48f1c0c959
--- /dev/null
+++ b/challenge-047/arne-sommer/raku/gapful-gather-sub
@@ -0,0 +1,18 @@
+#! /usr/bin/env raku
+
+my $gapful := gather
+{
+ for 100 .. *
+ {
+ take $_ if is-gapful($_);
+ }
+}
+
+say "First 20 Gapful numbers: { $gapful[^20].join(',') }.";
+
+sub is-gapful (Int $number)
+{
+ my $divisor = $number.substr(0,1) ~ $number.substr(*-1,1);
+
+ return $number %% $divisor;
+} \ No newline at end of file
diff --git a/challenge-047/arne-sommer/raku/gapful-grep b/challenge-047/arne-sommer/raku/gapful-grep
new file mode 100755
index 0000000000..9baeef3d5a
--- /dev/null
+++ b/challenge-047/arne-sommer/raku/gapful-grep
@@ -0,0 +1,5 @@
+#! /usr/bin/env raku
+
+my $gapful := (100 .. *).grep( { $_ %% ( .substr(0,1) ~ .substr(*-1,1) ) });
+
+say "First 20 Gapful numbers: { $gapful[^20].join(',') }.";
diff --git a/challenge-047/arne-sommer/raku/oo-test b/challenge-047/arne-sommer/raku/oo-test
new file mode 100755
index 0000000000..5bc0b4100c
--- /dev/null
+++ b/challenge-047/arne-sommer/raku/oo-test
@@ -0,0 +1,21 @@
+#! /usr/bin/env raku
+
+use lib "lib";
+
+use Number::Roman::OO;
+
+my $a = Number::Roman::OO.new(12);
+my $b = Number::Roman::OO.new("MCM");
+
+say "{ $a.Str } => { $a.Int }";
+say "{ $b.Str } => { $b.Int }";
+
+my $c = $a.add($b); say "{ $c.Str } => { $c.Int }";
+my $d = $c.add(27); say "{ $d.Str } => { $d.Int }";
+
+my $e = $c + $d; say "{ $e.Str } => { $e.Int }";
+my $f = $d + 999; say "{ $f.Str } => { $f.Int }";
+
+say "Something" if $a < $b;
+
+say $a; \ No newline at end of file
diff --git a/challenge-047/arne-sommer/raku/roman-calculator-given b/challenge-047/arne-sommer/raku/roman-calculator-given
new file mode 100755
index 0000000000..3d3b3bea1b
--- /dev/null
+++ b/challenge-047/arne-sommer/raku/roman-calculator-given
@@ -0,0 +1,19 @@
+#! /usr/bin/env raku
+
+use lib "lib";
+
+use Number::Roman :to, :from;
+
+unit sub MAIN (Str $first, Str $operator, Str $second);
+
+my $f = from-roman($first);
+my $s = from-roman($second);
+
+given $operator
+{
+ when '+' { say to-roman($f + $s) };
+ when '-' { say to-roman($f - $s) };
+ when 'x' { say to-roman($f * $s) };
+ when '*' { say to-roman($f * $s) };
+ when '/' { say to-roman(Int($f) / Int($s)) };
+}
diff --git a/challenge-047/arne-sommer/raku/roman-calculator-given-turbo b/challenge-047/arne-sommer/raku/roman-calculator-given-turbo
new file mode 100755
index 0000000000..62ab570c7c
--- /dev/null
+++ b/challenge-047/arne-sommer/raku/roman-calculator-given-turbo
@@ -0,0 +1,19 @@
+#! /usr/bin/env raku
+
+use lib "lib";
+
+use Number::Roman;
+
+unit sub MAIN (Str $first, Str $operator, Str $second);
+
+my Int $f = $first.from-roman;
+my Int $s = $second.from-roman;
+
+given $operator
+{
+ when '+' { say ($f + $s).roman };
+ when '-' { say ($f - $s).roman };
+ when 'x' { say ($f * $s).roman };
+ when '*' { say ($f * $s).roman };
+ when '/' { say (Int($f) / Int($s)).roman };
+}
diff --git a/challenge-047/arne-sommer/raku/roman-calculator-multi b/challenge-047/arne-sommer/raku/roman-calculator-multi
new file mode 100755
index 0000000000..a4bff264b1
--- /dev/null
+++ b/challenge-047/arne-sommer/raku/roman-calculator-multi
@@ -0,0 +1,30 @@
+#! /usr/bin/env raku
+
+use lib "lib";
+
+use Number::Roman :to, :from;
+
+multi MAIN (Str $first, "+", Str $second)
+{
+ say to-roman( from-roman($first) + from-roman($second) );
+}
+
+multi MAIN (Str $first, "-", Str $second)
+{
+ say to-roman( from-roman($first) - from-roman($second) );
+}
+
+multi MAIN (Str $first, '*', Str $second)
+{
+ say to-roman( from-roman($first) * from-roman($second) );
+}
+
+multi MAIN (Str $first, 'x', Str $second)
+{
+ say to-roman( from-roman($first) * from-roman($second) );
+}
+
+multi MAIN (Str $first, "/", Str $second)
+{
+ say to-roman(Int( from-roman($first) / from-roman($second)) );
+}