diff options
| -rw-r--r-- | challenge-091/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-091/arne-sommer/perl/ch-1.pl | 29 | ||||
| -rwxr-xr-x | challenge-091/arne-sommer/perl/ch-2.pl | 25 | ||||
| -rwxr-xr-x | challenge-091/arne-sommer/perl/count-number-perl | 29 | ||||
| -rwxr-xr-x | challenge-091/arne-sommer/perl/count-number-perl-regex | 22 | ||||
| -rwxr-xr-x | challenge-091/arne-sommer/perl/jump-game-perl | 25 | ||||
| -rwxr-xr-x | challenge-091/arne-sommer/raku/ch-1.raku | 20 | ||||
| -rwxr-xr-x | challenge-091/arne-sommer/raku/ch-2.raku | 16 | ||||
| -rwxr-xr-x | challenge-091/arne-sommer/raku/count-number | 20 | ||||
| -rwxr-xr-x | challenge-091/arne-sommer/raku/jump-game | 16 | ||||
| -rwxr-xr-x | challenge-091/arne-sommer/raku/jump-game-sans-zero | 16 |
11 files changed, 219 insertions, 0 deletions
diff --git a/challenge-091/arne-sommer/blog.txt b/challenge-091/arne-sommer/blog.txt new file mode 100644 index 0000000000..cbd1dae9dd --- /dev/null +++ b/challenge-091/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/count-jump.html diff --git a/challenge-091/arne-sommer/perl/ch-1.pl b/challenge-091/arne-sommer/perl/ch-1.pl new file mode 100755 index 0000000000..3c5bf44165 --- /dev/null +++ b/challenge-091/arne-sommer/perl/ch-1.pl @@ -0,0 +1,29 @@ +#! /usr/bin/env perl + +use strict; +use warnings; + +my $N = shift(@ARGV) || ""; + +die "Please specify a positive integer" unless $N =~ /^[1-9]\d*$/; + +my @input = split("", $N); +my $current = shift(@input); +my $count = 1; + +while (@input) +{ + if ($input[0] eq $current) + { + shift(@input); + $count++; + } + else + { + print $count . $current; + $current = shift(@input); + $count = 1; + } +} + +print $count . $current . "\n"; diff --git a/challenge-091/arne-sommer/perl/ch-2.pl b/challenge-091/arne-sommer/perl/ch-2.pl new file mode 100755 index 0000000000..7bff3cac80 --- /dev/null +++ b/challenge-091/arne-sommer/perl/ch-2.pl @@ -0,0 +1,25 @@ +#! /usr/bin/env perl + +use strict; +use warnings; +use feature 'say'; + +use List::Util qw(all); + +die "Non-negative integers only" unless all { $ ~= /^\d+$/ } @ARGV; + +my $index = 0; + +while (1) +{ + if ($index == @ARGV -1) { say 1; last; } + + if (defined $ARGV[$index] && $ARGV[$index]) + { + $index += $ARGV[$index]; + } + else + { + say 0; last; + } +} diff --git a/challenge-091/arne-sommer/perl/count-number-perl b/challenge-091/arne-sommer/perl/count-number-perl new file mode 100755 index 0000000000..3c5bf44165 --- /dev/null +++ b/challenge-091/arne-sommer/perl/count-number-perl @@ -0,0 +1,29 @@ +#! /usr/bin/env perl + +use strict; +use warnings; + +my $N = shift(@ARGV) || ""; + +die "Please specify a positive integer" unless $N =~ /^[1-9]\d*$/; + +my @input = split("", $N); +my $current = shift(@input); +my $count = 1; + +while (@input) +{ + if ($input[0] eq $current) + { + shift(@input); + $count++; + } + else + { + print $count . $current; + $current = shift(@input); + $count = 1; + } +} + +print $count . $current . "\n"; diff --git a/challenge-091/arne-sommer/perl/count-number-perl-regex b/challenge-091/arne-sommer/perl/count-number-perl-regex new file mode 100755 index 0000000000..d9068f705f --- /dev/null +++ b/challenge-091/arne-sommer/perl/count-number-perl-regex @@ -0,0 +1,22 @@ +#! /usr/bin/env perl + +use strict; +use warnings; +use feature 'say'; +use feature 'signatures'; + +no warnings qw(experimental::signatures); + +my $N = shift(@ARGV) || ""; + +die "Please specify a positive integer" unless $N =~ /^[1-9]\d*$/; + +say look_and_say($N); + +sub look_and_say ($input) +{ + $input =~ s/((.)\2*)/length($1) . $2/ge; + + return $input; +} + diff --git a/challenge-091/arne-sommer/perl/jump-game-perl b/challenge-091/arne-sommer/perl/jump-game-perl new file mode 100755 index 0000000000..7bff3cac80 --- /dev/null +++ b/challenge-091/arne-sommer/perl/jump-game-perl @@ -0,0 +1,25 @@ +#! /usr/bin/env perl + +use strict; +use warnings; +use feature 'say'; + +use List::Util qw(all); + +die "Non-negative integers only" unless all { $ ~= /^\d+$/ } @ARGV; + +my $index = 0; + +while (1) +{ + if ($index == @ARGV -1) { say 1; last; } + + if (defined $ARGV[$index] && $ARGV[$index]) + { + $index += $ARGV[$index]; + } + else + { + say 0; last; + } +} diff --git a/challenge-091/arne-sommer/raku/ch-1.raku b/challenge-091/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..1bb05f9855 --- /dev/null +++ b/challenge-091/arne-sommer/raku/ch-1.raku @@ -0,0 +1,20 @@ +#! /usr/bin/env raku + +subset PositiveInt of Int where * > 0; + +unit sub MAIN (PositiveInt $N); + +say look-and-say($N); + +sub look-and-say ($input) +{ + my $return = ""; + + for $input.comb: / (.) $0* / -> $batch + { + $return ~= $batch.chars ~ $batch.substr(0,1); + } + + return $return; +} + diff --git a/challenge-091/arne-sommer/raku/ch-2.raku b/challenge-091/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..70f8774151 --- /dev/null +++ b/challenge-091/arne-sommer/raku/ch-2.raku @@ -0,0 +1,16 @@ +#! /usr/bin/env raku + +subset PositiveInt0 of Int where * >= 0; + +unit sub MAIN (*@N where @N.elems > 0 && all(@N) ~~ PositiveInt0); + +my $index = 0; + +loop +{ + ( say 1; last ) if $index == @N.end; + + @N[$index].defined && @N[$index] + ?? ( $index += @N[$index] ) + !! ( say 0; last); +} diff --git a/challenge-091/arne-sommer/raku/count-number b/challenge-091/arne-sommer/raku/count-number new file mode 100755 index 0000000000..1bb05f9855 --- /dev/null +++ b/challenge-091/arne-sommer/raku/count-number @@ -0,0 +1,20 @@ +#! /usr/bin/env raku + +subset PositiveInt of Int where * > 0; + +unit sub MAIN (PositiveInt $N); + +say look-and-say($N); + +sub look-and-say ($input) +{ + my $return = ""; + + for $input.comb: / (.) $0* / -> $batch + { + $return ~= $batch.chars ~ $batch.substr(0,1); + } + + return $return; +} + diff --git a/challenge-091/arne-sommer/raku/jump-game b/challenge-091/arne-sommer/raku/jump-game new file mode 100755 index 0000000000..70f8774151 --- /dev/null +++ b/challenge-091/arne-sommer/raku/jump-game @@ -0,0 +1,16 @@ +#! /usr/bin/env raku + +subset PositiveInt0 of Int where * >= 0; + +unit sub MAIN (*@N where @N.elems > 0 && all(@N) ~~ PositiveInt0); + +my $index = 0; + +loop +{ + ( say 1; last ) if $index == @N.end; + + @N[$index].defined && @N[$index] + ?? ( $index += @N[$index] ) + !! ( say 0; last); +} diff --git a/challenge-091/arne-sommer/raku/jump-game-sans-zero b/challenge-091/arne-sommer/raku/jump-game-sans-zero new file mode 100755 index 0000000000..891d224306 --- /dev/null +++ b/challenge-091/arne-sommer/raku/jump-game-sans-zero @@ -0,0 +1,16 @@ +#! /usr/bin/env raku + +subset PositiveInt of Int where * > 0; + +unit sub MAIN (*@N where @N.elems > 0 && all(@N) ~~ PositiveInt); + +my $index = 0; + +loop +{ + ( say 1; last ) if $index == @N.end; + + @N[$index].defined + ?? ( $index += @N[$index] ) + !! ( say 0; last); +} |
