From aba19596ff10b134355124a3d9a7231e563a6310 Mon Sep 17 00:00:00 2001 From: arnesom Date: Sun, 7 May 2023 21:16:26 +0200 Subject: Arne Sommer --- challenge-215/arne-sommer/blog.txt | 1 + challenge-215/arne-sommer/raku/ch-1.pl | 5 +++ challenge-215/arne-sommer/raku/ch-2.pl | 37 ++++++++++++++++++++++ challenge-215/arne-sommer/raku/number-placement | 37 ++++++++++++++++++++++ challenge-215/arne-sommer/raku/odd-one-out | 9 ++++++ .../arne-sommer/raku/odd-one-out-oneliner | 5 +++ 6 files changed, 94 insertions(+) create mode 100644 challenge-215/arne-sommer/blog.txt create mode 100755 challenge-215/arne-sommer/raku/ch-1.pl create mode 100755 challenge-215/arne-sommer/raku/ch-2.pl create mode 100755 challenge-215/arne-sommer/raku/number-placement create mode 100755 challenge-215/arne-sommer/raku/odd-one-out create mode 100755 challenge-215/arne-sommer/raku/odd-one-out-oneliner 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; -- cgit