diff options
| -rw-r--r-- | challenge-091/james-smith/perl/ch-1.pl | 21 | ||||
| -rw-r--r-- | challenge-091/james-smith/perl/ch-2.pl | 19 |
2 files changed, 40 insertions, 0 deletions
diff --git a/challenge-091/james-smith/perl/ch-1.pl b/challenge-091/james-smith/perl/ch-1.pl new file mode 100644 index 0000000000..bdce7b7b2f --- /dev/null +++ b/challenge-091/james-smith/perl/ch-1.pl @@ -0,0 +1,21 @@ +#!/usr/local/bin/perl + +use strict; + +use warnings; +use feature qw(say); +use Test::More; + +is( read_numbers( 1122234 ), 21321314 ); +is( read_numbers( 2333445 ), 12332415 ); +is( read_numbers( 12345 ), 1112131415 ); + +done_testing(); + +sub read_numbers { + return $_[0] =~ s{( + (\d) # Any digit [ this becomes \2 / $2 ] + (\2*) # Any other copies of the digit + )}{(length $1).$2}regex; +} + diff --git a/challenge-091/james-smith/perl/ch-2.pl b/challenge-091/james-smith/perl/ch-2.pl new file mode 100644 index 0000000000..4aa2a330c4 --- /dev/null +++ b/challenge-091/james-smith/perl/ch-2.pl @@ -0,0 +1,19 @@ +#!/usr/local/bin/perl + +use strict; + +use warnings; +use feature qw(say); +use Test::More; + +is( jump_game( qw(1 3 1 2) ), 1 ); ## 0 -> 1 -> 4 (escaped) +is( jump_game( qw(2 1 1 0 2) ), 0 ); ## 0 -> 2 -> 3 (hit hole) + +done_testing(); + +sub jump_game { + my $ptr = 0; + $ptr += $_[$ptr] while $ptr < @_ && $_[$ptr]; + return $ptr < @_ ? 0 : 1; +} + |
