aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-091/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-091/arne-sommer/perl/ch-1.pl29
-rwxr-xr-xchallenge-091/arne-sommer/perl/ch-2.pl25
-rwxr-xr-xchallenge-091/arne-sommer/perl/count-number-perl29
-rwxr-xr-xchallenge-091/arne-sommer/perl/count-number-perl-regex22
-rwxr-xr-xchallenge-091/arne-sommer/perl/jump-game-perl25
-rwxr-xr-xchallenge-091/arne-sommer/raku/ch-1.raku20
-rwxr-xr-xchallenge-091/arne-sommer/raku/ch-2.raku16
-rwxr-xr-xchallenge-091/arne-sommer/raku/count-number20
-rwxr-xr-xchallenge-091/arne-sommer/raku/jump-game16
-rwxr-xr-xchallenge-091/arne-sommer/raku/jump-game-sans-zero16
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);
+}