diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-02-16 01:36:22 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-02-16 01:36:22 +0000 |
| commit | b7b5ae5fcc788d10e6a1cd0c4b59ce4b1c6b5b3d (patch) | |
| tree | b8317bd6bc3bd7dcc0a9025afff5c621be27a3e1 /challenge-047 | |
| parent | 5e0a1807a04e0f144da845c5c9fefed244cbc074 (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-047/arne-sommer/raku/ch-1.p6 | 19 | ||||
| -rwxr-xr-x | challenge-047/arne-sommer/raku/ch-2.p6 | 5 | ||||
| -rwxr-xr-x | challenge-047/arne-sommer/raku/gapful-gather | 11 | ||||
| -rwxr-xr-x | challenge-047/arne-sommer/raku/gapful-gather-sub | 18 | ||||
| -rwxr-xr-x | challenge-047/arne-sommer/raku/gapful-grep | 5 | ||||
| -rwxr-xr-x | challenge-047/arne-sommer/raku/oo-test | 21 | ||||
| -rwxr-xr-x | challenge-047/arne-sommer/raku/roman-calculator-given | 19 | ||||
| -rwxr-xr-x | challenge-047/arne-sommer/raku/roman-calculator-given-turbo | 19 | ||||
| -rwxr-xr-x | challenge-047/arne-sommer/raku/roman-calculator-multi | 30 |
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)) ); +} |
