diff options
| author | juliodcs <julio.dcs@gmail.com> | 2020-12-20 17:08:26 +0100 |
|---|---|---|
| committer | juliodcs <julio.dcs@gmail.com> | 2020-12-20 17:08:26 +0100 |
| commit | 577b43f5655616bbb785dc6b96eccc1547075178 (patch) | |
| tree | b3139a20600170981c6da3b752332bd57f7c8d42 | |
| parent | 2c8320e7653a2fb8335078b07e8e7925f540073b (diff) | |
| download | perlweeklychallenge-club-577b43f5655616bbb785dc6b96eccc1547075178.tar.gz perlweeklychallenge-club-577b43f5655616bbb785dc6b96eccc1547075178.tar.bz2 perlweeklychallenge-club-577b43f5655616bbb785dc6b96eccc1547075178.zip | |
juliodcs-week91
| -rw-r--r-- | challenge-091/juliodcs/perl/ch-1.pl | 6 | ||||
| -rw-r--r-- | challenge-091/juliodcs/perl/ch-2.pl | 15 | ||||
| -rw-r--r-- | challenge-091/juliodcs/raku/ch-1.raku | 39 | ||||
| -rw-r--r-- | challenge-091/juliodcs/raku/ch-2.raku | 10 |
4 files changed, 70 insertions, 0 deletions
diff --git a/challenge-091/juliodcs/perl/ch-1.pl b/challenge-091/juliodcs/perl/ch-1.pl new file mode 100644 index 0000000000..3219e9c7cc --- /dev/null +++ b/challenge-091/juliodcs/perl/ch-1.pl @@ -0,0 +1,6 @@ +use strict;
+use warnings;
+use Lingua::EN::Numbers 'num2en';
+use feature 'say';
+
+say((shift // 42) =~ s/((\d)\2*)/num2en(length $1)." $2 "/egr)
diff --git a/challenge-091/juliodcs/perl/ch-2.pl b/challenge-091/juliodcs/perl/ch-2.pl new file mode 100644 index 0000000000..505fe1a1ee --- /dev/null +++ b/challenge-091/juliodcs/perl/ch-2.pl @@ -0,0 +1,15 @@ +use strict;
+use warnings;
+use Lingua::EN::Numbers 'num2en';
+use feature 'say';
+use experimental 'signatures';
+
+my @input = @ARGV;
+
+sub advance($pos = 0) {
+ return 1 if $pos == @ARGV - 1;
+ return 0 if $pos >= @ARGV || $input[$pos] == 0;
+ return advance($pos + $input[$pos]);
+}
+
+say advance;
diff --git a/challenge-091/juliodcs/raku/ch-1.raku b/challenge-091/juliodcs/raku/ch-1.raku new file mode 100644 index 0000000000..87e3053fe2 --- /dev/null +++ b/challenge-091/juliodcs/raku/ch-1.raku @@ -0,0 +1,39 @@ +#! /usr/bin/env raku
+
+my @names20 = <zero one two three four five six seven eight nine
+ ten eleven twelve thirteen fourteen fifteen sixteen
+ seventeen eighteen nineteen>;
+
+my @tens = <twenty thirty forty fifty sixty seventy eighty ninety>;
+
+my @zillions = [
+ [10 ** 3, 'thousand'],
+ [10 ** 6, 'million' ],
+ [10 ** 9, 'billion' ],
+ [10 ** 12, 'trillion'],
+ # ... add as you need ...
+];
+
+multi num-to-en($number where * < 20) {
+ @names20[$number]
+}
+
+multi num-to-en($number where * < 100) {
+ my $end := $number % 10 ?? '-' ~ num-to-en $number % 10 !! '';
+ @tens[($number div 10) - 2] ~ $end
+}
+
+multi num-to-en($number where * < 1000) {
+ my $prefix := num-to-en($number div 100) ~ ' hundred';
+ my $end := $number % 100 ?? ' ' ~ num-to-en $number % 100 !! '';
+ $prefix ~ $end
+}
+
+multi num-to-en($number where * < @zillions.tail.head) {
+ my ($value, $name) = @zillions.grep(*.head < $number).sort.tail;
+ my $prefix := num-to-en($number div $value) ~ " $name";
+ my $end := $number % $value ?? ' ' ~ num-to-en($number % $value) !! '';
+ $prefix ~ $end
+}
+
+say (@*ARGS.head // 42).subst: /((\d)$0*)/, {"{num-to-en $0.chars} $0[0] "}, :g;
diff --git a/challenge-091/juliodcs/raku/ch-2.raku b/challenge-091/juliodcs/raku/ch-2.raku new file mode 100644 index 0000000000..0e56087dd7 --- /dev/null +++ b/challenge-091/juliodcs/raku/ch-2.raku @@ -0,0 +1,10 @@ +#! /usr/bin/env raku
+
+my @N := @*ARGS>>.Int;
+
+multi advance($pos where * == @N.elems.pred) { 1 }
+multi advance($pos where * >= @N.elems ) { 0 }
+multi advance($pos where @N[$pos] == 0) { 1 }
+multi advance($pos = 0) { advance $pos + @N[$pos] }
+
+say advance;
|
