diff options
| author | arnesom <arne@bbop.org> | 2024-08-16 22:51:26 +0200 |
|---|---|---|
| committer | arnesom <arne@bbop.org> | 2024-08-16 22:51:26 +0200 |
| commit | 577c09cf53416e977162e65ffd79828f2dee5b45 (patch) | |
| tree | 3282d7e49d763d91962824ece624b2760838e315 | |
| parent | 675ebc99f47bc416a4284d3e108c06838b3cb157 (diff) | |
| download | perlweeklychallenge-club-577c09cf53416e977162e65ffd79828f2dee5b45.tar.gz perlweeklychallenge-club-577c09cf53416e977162e65ffd79828f2dee5b45.tar.bz2 perlweeklychallenge-club-577c09cf53416e977162e65ffd79828f2dee5b45.zip | |
Arne Sommer
| -rw-r--r-- | challenge-282/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-282/arne-sommer/raku/ch-1.raku | 40 | ||||
| -rwxr-xr-x | challenge-282/arne-sommer/raku/ch-2.raku | 22 | ||||
| -rwxr-xr-x | challenge-282/arne-sommer/raku/changing-keys | 22 | ||||
| -rwxr-xr-x | challenge-282/arne-sommer/raku/good-integer | 40 | ||||
| -rwxr-xr-x | challenge-282/arne-sommer/raku/good-integer-regexp | 7 |
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; |
