aboutsummaryrefslogtreecommitdiff
path: root/challenge-215
diff options
context:
space:
mode:
authorarnesom <arne@bbop.org>2023-05-07 21:16:26 +0200
committerarnesom <arne@bbop.org>2023-05-07 21:16:26 +0200
commitaba19596ff10b134355124a3d9a7231e563a6310 (patch)
tree1d77a6b07c18287a74acb3894ad80610d98a0202 /challenge-215
parentfca710e33f9f55af0a163c95ad060a4d1c6e7be5 (diff)
downloadperlweeklychallenge-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.txt1
-rwxr-xr-xchallenge-215/arne-sommer/raku/ch-1.pl5
-rwxr-xr-xchallenge-215/arne-sommer/raku/ch-2.pl37
-rwxr-xr-xchallenge-215/arne-sommer/raku/number-placement37
-rwxr-xr-xchallenge-215/arne-sommer/raku/odd-one-out9
-rwxr-xr-xchallenge-215/arne-sommer/raku/odd-one-out-oneliner5
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;