aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorarnesom <arne@bbop.org>2024-08-16 22:51:26 +0200
committerarnesom <arne@bbop.org>2024-08-16 22:51:26 +0200
commit577c09cf53416e977162e65ffd79828f2dee5b45 (patch)
tree3282d7e49d763d91962824ece624b2760838e315
parent675ebc99f47bc416a4284d3e108c06838b3cb157 (diff)
downloadperlweeklychallenge-club-577c09cf53416e977162e65ffd79828f2dee5b45.tar.gz
perlweeklychallenge-club-577c09cf53416e977162e65ffd79828f2dee5b45.tar.bz2
perlweeklychallenge-club-577c09cf53416e977162e65ffd79828f2dee5b45.zip
Arne Sommer
-rw-r--r--challenge-282/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-282/arne-sommer/raku/ch-1.raku40
-rwxr-xr-xchallenge-282/arne-sommer/raku/ch-2.raku22
-rwxr-xr-xchallenge-282/arne-sommer/raku/changing-keys22
-rwxr-xr-xchallenge-282/arne-sommer/raku/good-integer40
-rwxr-xr-xchallenge-282/arne-sommer/raku/good-integer-regexp7
6 files changed, 132 insertions, 0 deletions
diff --git a/challenge-282/arne-sommer/blog.txt b/challenge-282/arne-sommer/blog.txt
new file mode 100644
index 0000000000..be5d498968
--- /dev/null
+++ b/challenge-282/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/changingly-good.html
diff --git a/challenge-282/arne-sommer/raku/ch-1.raku b/challenge-282/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..19ecf56b9b
--- /dev/null
+++ b/challenge-282/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,40 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (UInt $int where $int > 99, :v(:$verbose));
+
+my $matching := gather
+{
+ my @digits = $int.comb;
+ my $current = @digits.shift;
+ my $count = 1;
+
+ while @digits
+ {
+ my $next = @digits.shift;
+
+ if $current eq $next
+ {
+ $count++;
+ }
+ else
+ {
+ take $current x $count;
+ $current = $next;
+ $count = 1;
+ }
+ }
+
+ take $current if $current;
+}
+
+for $matching -> $candidate
+{
+ say ":Considering candidate '$candidate'" if $verbose;
+ if $candidate.chars == 3
+ {
+ say $candidate;
+ exit;
+ }
+}
+
+say -1; \ No newline at end of file
diff --git a/challenge-282/arne-sommer/raku/ch-2.raku b/challenge-282/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..5fee6572ae
--- /dev/null
+++ b/challenge-282/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,22 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($str where $str ~~ /^<[a..z A..Z]>+$/, :v(:$verbose));
+
+my @letters = $str.comb;
+my $first = @letters.shift;
+my $count = 0;
+
+while @letters
+{
+ my $second = @letters.shift;
+
+ my $change = $first.lc ne $second.lc;
+
+ say ": $first -> $second : { +$change } key change" if $verbose;
+
+ $count++ if $change;
+
+ $first = $second;
+}
+
+say $count; \ No newline at end of file
diff --git a/challenge-282/arne-sommer/raku/changing-keys b/challenge-282/arne-sommer/raku/changing-keys
new file mode 100755
index 0000000000..5fee6572ae
--- /dev/null
+++ b/challenge-282/arne-sommer/raku/changing-keys
@@ -0,0 +1,22 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($str where $str ~~ /^<[a..z A..Z]>+$/, :v(:$verbose));
+
+my @letters = $str.comb;
+my $first = @letters.shift;
+my $count = 0;
+
+while @letters
+{
+ my $second = @letters.shift;
+
+ my $change = $first.lc ne $second.lc;
+
+ say ": $first -> $second : { +$change } key change" if $verbose;
+
+ $count++ if $change;
+
+ $first = $second;
+}
+
+say $count; \ No newline at end of file
diff --git a/challenge-282/arne-sommer/raku/good-integer b/challenge-282/arne-sommer/raku/good-integer
new file mode 100755
index 0000000000..19ecf56b9b
--- /dev/null
+++ b/challenge-282/arne-sommer/raku/good-integer
@@ -0,0 +1,40 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (UInt $int where $int > 99, :v(:$verbose));
+
+my $matching := gather
+{
+ my @digits = $int.comb;
+ my $current = @digits.shift;
+ my $count = 1;
+
+ while @digits
+ {
+ my $next = @digits.shift;
+
+ if $current eq $next
+ {
+ $count++;
+ }
+ else
+ {
+ take $current x $count;
+ $current = $next;
+ $count = 1;
+ }
+ }
+
+ take $current if $current;
+}
+
+for $matching -> $candidate
+{
+ say ":Considering candidate '$candidate'" if $verbose;
+ if $candidate.chars == 3
+ {
+ say $candidate;
+ exit;
+ }
+}
+
+say -1; \ No newline at end of file
diff --git a/challenge-282/arne-sommer/raku/good-integer-regexp b/challenge-282/arne-sommer/raku/good-integer-regexp
new file mode 100755
index 0000000000..e62385ff64
--- /dev/null
+++ b/challenge-282/arne-sommer/raku/good-integer-regexp
@@ -0,0 +1,7 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (UInt $int where $int > 99);
+
+say $int ~~ /(.) {} :my $c=$0; <?after $c ** 3> /
+ ?? $0.Str x 3
+ !! -1;