diff options
| author | arnesom <arne@bbop.org> | 2023-05-07 21:16:26 +0200 |
|---|---|---|
| committer | arnesom <arne@bbop.org> | 2023-05-07 21:16:26 +0200 |
| commit | aba19596ff10b134355124a3d9a7231e563a6310 (patch) | |
| tree | 1d77a6b07c18287a74acb3894ad80610d98a0202 /challenge-215 | |
| parent | fca710e33f9f55af0a163c95ad060a4d1c6e7be5 (diff) | |
| download | perlweeklychallenge-club-aba19596ff10b134355124a3d9a7231e563a6310.tar.gz perlweeklychallenge-club-aba19596ff10b134355124a3d9a7231e563a6310.tar.bz2 perlweeklychallenge-club-aba19596ff10b134355124a3d9a7231e563a6310.zip | |
Arne Sommer
Diffstat (limited to 'challenge-215')
| -rw-r--r-- | challenge-215/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-215/arne-sommer/raku/ch-1.pl | 5 | ||||
| -rwxr-xr-x | challenge-215/arne-sommer/raku/ch-2.pl | 37 | ||||
| -rwxr-xr-x | challenge-215/arne-sommer/raku/number-placement | 37 | ||||
| -rwxr-xr-x | challenge-215/arne-sommer/raku/odd-one-out | 9 | ||||
| -rwxr-xr-x | challenge-215/arne-sommer/raku/odd-one-out-oneliner | 5 |
6 files changed, 94 insertions, 0 deletions
diff --git a/challenge-215/arne-sommer/blog.txt b/challenge-215/arne-sommer/blog.txt new file mode 100644 index 0000000000..50b9ba9e35 --- /dev/null +++ b/challenge-215/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/odd-placement.html diff --git a/challenge-215/arne-sommer/raku/ch-1.pl b/challenge-215/arne-sommer/raku/ch-1.pl new file mode 100755 index 0000000000..c03295f339 --- /dev/null +++ b/challenge-215/arne-sommer/raku/ch-1.pl @@ -0,0 +1,5 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@words where @words.elems > 0 && all(@words) ~~ /^<[a..z]>+$/); + +say @words.grep({ ! [<=] $_.ords }).elems; diff --git a/challenge-215/arne-sommer/raku/ch-2.pl b/challenge-215/arne-sommer/raku/ch-2.pl new file mode 100755 index 0000000000..81fadb3459 --- /dev/null +++ b/challenge-215/arne-sommer/raku/ch-2.pl @@ -0,0 +1,37 @@ +#! /usr/bin/env raku + +unit sub MAIN (UInt :c(:$count) where $count > 0; + *@numbers where @numbers.elems > 0 && all(@numbers) eq "0" | "1", + :v(:$verbose)); + +my @num = @numbers.clone; # Cannot assign to an immutable value +my $size = @num.elems; +my $replaced = 0; + +for ^$count +{ + for 0 .. $size -3 -> $start + { + print ":Start at $start. Values: [{ @num[$start .. $start +2].join(",") }]" if $verbose; + + if all(@num[$start .. $start +2]) == 0 + { + @num[$start +1] = 1; + say " -> replaced with [@num[$start],1,@num[$start+2]]" if $verbose; + $replaced++; + last; + } + elsif $verbose + { + say ""; + } + } +} + +say ":Numbers: { @num.join(",") }" if $verbose; + +say + ($count == $replaced); + +# $ ./number-placement -v -c=1 1 0 0 0 1 +# $ ./number-placement -v -c=2 1 0 0 0 1 +# $ ./number-placement -v -c=3 1 0 0 0 0 0 0 0 1 diff --git a/challenge-215/arne-sommer/raku/number-placement b/challenge-215/arne-sommer/raku/number-placement new file mode 100755 index 0000000000..81fadb3459 --- /dev/null +++ b/challenge-215/arne-sommer/raku/number-placement @@ -0,0 +1,37 @@ +#! /usr/bin/env raku + +unit sub MAIN (UInt :c(:$count) where $count > 0; + *@numbers where @numbers.elems > 0 && all(@numbers) eq "0" | "1", + :v(:$verbose)); + +my @num = @numbers.clone; # Cannot assign to an immutable value +my $size = @num.elems; +my $replaced = 0; + +for ^$count +{ + for 0 .. $size -3 -> $start + { + print ":Start at $start. Values: [{ @num[$start .. $start +2].join(",") }]" if $verbose; + + if all(@num[$start .. $start +2]) == 0 + { + @num[$start +1] = 1; + say " -> replaced with [@num[$start],1,@num[$start+2]]" if $verbose; + $replaced++; + last; + } + elsif $verbose + { + say ""; + } + } +} + +say ":Numbers: { @num.join(",") }" if $verbose; + +say + ($count == $replaced); + +# $ ./number-placement -v -c=1 1 0 0 0 1 +# $ ./number-placement -v -c=2 1 0 0 0 1 +# $ ./number-placement -v -c=3 1 0 0 0 0 0 0 0 1 diff --git a/challenge-215/arne-sommer/raku/odd-one-out b/challenge-215/arne-sommer/raku/odd-one-out new file mode 100755 index 0000000000..9d9a967ece --- /dev/null +++ b/challenge-215/arne-sommer/raku/odd-one-out @@ -0,0 +1,9 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@words where @words.elems > 0 && all(@words) ~~ /^<[a..z]>+$/, :v(:$verbose)); + +my @odd = @words.grep({ ! [<=] $_.ords }); + +say ":Odd word(s): { @odd.map({ "'$_'" }).join(",") }" if $verbose; + +say @odd.elems; diff --git a/challenge-215/arne-sommer/raku/odd-one-out-oneliner b/challenge-215/arne-sommer/raku/odd-one-out-oneliner new file mode 100755 index 0000000000..c03295f339 --- /dev/null +++ b/challenge-215/arne-sommer/raku/odd-one-out-oneliner @@ -0,0 +1,5 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@words where @words.elems > 0 && all(@words) ~~ /^<[a..z]>+$/); + +say @words.grep({ ! [<=] $_.ords }).elems; |
