aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2024-11-10 19:47:25 +0000
committerGitHub <noreply@github.com>2024-11-10 19:47:25 +0000
commit3ace4b8c6619dbe1ebf536c586238c40d5fb9f76 (patch)
tree1da703a457ad17a165f0ad9be5c6d3fa6884402a
parenta11afbcf9fabe9503fe651c94277437767a939f5 (diff)
parent4ab4ed913afac1651b20692cf4a9d3a58805487f (diff)
downloadperlweeklychallenge-club-3ace4b8c6619dbe1ebf536c586238c40d5fb9f76.tar.gz
perlweeklychallenge-club-3ace4b8c6619dbe1ebf536c586238c40d5fb9f76.tar.bz2
perlweeklychallenge-club-3ace4b8c6619dbe1ebf536c586238c40d5fb9f76.zip
Merge pull request #11141 from arnesom/branch-for-challenge-294
Branch for challenge 294
-rw-r--r--challenge-294/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-294/arne-sommer/raku/ch-1.raku24
-rwxr-xr-xchallenge-294/arne-sommer/raku/ch-2.raku36
-rwxr-xr-xchallenge-294/arne-sommer/raku/consecutive-sequence24
-rwxr-xr-xchallenge-294/arne-sommer/raku/next-permutation34
-rwxr-xr-xchallenge-294/arne-sommer/raku/next-permutation-sort36
6 files changed, 155 insertions, 0 deletions
diff --git a/challenge-294/arne-sommer/blog.txt b/challenge-294/arne-sommer/blog.txt
new file mode 100644
index 0000000000..2811ec517a
--- /dev/null
+++ b/challenge-294/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/next-consecutive.html
diff --git a/challenge-294/arne-sommer/raku/ch-1.raku b/challenge-294/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..91cef091b7
--- /dev/null
+++ b/challenge-294/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,24 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where all(@ints) ~~ Int && @ints.elems > 0, :v(:$verbose));
+
+my @sorted = @ints.sort;
+my @unique = @sorted.unique;
+
+say ": Sorted: @sorted[]" if $verbose;
+say ": Unique: @unique[]" if $verbose;
+
+my $current = @unique.shift;
+my $count = 1;
+my $max = 1;
+
+for @unique -> $next
+{
+ $count++ if $current +1 == $next;
+
+ $max = $count if $count > $max;
+
+ $current = $next;
+}
+
+say $max == 1 ?? -1 !! $max;
diff --git a/challenge-294/arne-sommer/raku/ch-2.raku b/challenge-294/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..24356f8d8d
--- /dev/null
+++ b/challenge-294/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,36 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where all(@ints) ~~ Int && @ints.elems > 1,
+ :f(:$fast-fail),
+ :v(:$verbose));
+
+my @a = @ints>>.Int;
+
+if $fast-fail && [>=] @a { say -1; exit }
+
+my $end = @a.end;
+
+for $end ... 1 -> $i
+{
+ for $i -1 ... 0 -> $j
+ {
+ if @a[$i] > @a[$j]
+ {
+ say ": index:$i -> @a[$i], index:$j -> @a[$j] (swap)" if $verbose;
+ my $n = @a[$i];
+ @a[$i] = @a[$j];
+ @a[$j] = $n;
+
+ @a[$j+1 .. *] = @a[$j+1 .. *].sort if $i > $j +1;
+
+ say "({ @a.join(", ") })";
+ exit;
+ }
+ elsif $verbose
+ {
+ say ": index:$i -> @a[$i], index:$j -> @a[$j] (skip)" if $verbose;
+ }
+ }
+}
+
+say "-1";
diff --git a/challenge-294/arne-sommer/raku/consecutive-sequence b/challenge-294/arne-sommer/raku/consecutive-sequence
new file mode 100755
index 0000000000..91cef091b7
--- /dev/null
+++ b/challenge-294/arne-sommer/raku/consecutive-sequence
@@ -0,0 +1,24 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where all(@ints) ~~ Int && @ints.elems > 0, :v(:$verbose));
+
+my @sorted = @ints.sort;
+my @unique = @sorted.unique;
+
+say ": Sorted: @sorted[]" if $verbose;
+say ": Unique: @unique[]" if $verbose;
+
+my $current = @unique.shift;
+my $count = 1;
+my $max = 1;
+
+for @unique -> $next
+{
+ $count++ if $current +1 == $next;
+
+ $max = $count if $count > $max;
+
+ $current = $next;
+}
+
+say $max == 1 ?? -1 !! $max;
diff --git a/challenge-294/arne-sommer/raku/next-permutation b/challenge-294/arne-sommer/raku/next-permutation
new file mode 100755
index 0000000000..8f6066d663
--- /dev/null
+++ b/challenge-294/arne-sommer/raku/next-permutation
@@ -0,0 +1,34 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where all(@ints) ~~ Int && @ints.elems > 1,
+ :f(:$fast-fail),
+ :v(:$verbose));
+
+my @a = @ints>>.Int;
+
+if $fast-fail && [>=] @a { say -1; exit }
+
+my $end = @a.end;
+
+for $end ... 1 -> $i
+{
+ for $i -1 ... 0 -> $j
+ {
+ if @a[$i] > @a[$j]
+ {
+ say ": index:$i -> @a[$i], index:$j -> @a[$j] (swap)" if $verbose;
+ my $n = @a[$i];
+ @a[$i] = @a[$j];
+ @a[$j] = $n;
+
+ say "({ @a.join(", ") })";
+ exit;
+ }
+ elsif $verbose
+ {
+ say ": index:$i -> @a[$i], index:$j -> @a[$j] (skip)" if $verbose;
+ }
+ }
+}
+
+say "-1";
diff --git a/challenge-294/arne-sommer/raku/next-permutation-sort b/challenge-294/arne-sommer/raku/next-permutation-sort
new file mode 100755
index 0000000000..24356f8d8d
--- /dev/null
+++ b/challenge-294/arne-sommer/raku/next-permutation-sort
@@ -0,0 +1,36 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where all(@ints) ~~ Int && @ints.elems > 1,
+ :f(:$fast-fail),
+ :v(:$verbose));
+
+my @a = @ints>>.Int;
+
+if $fast-fail && [>=] @a { say -1; exit }
+
+my $end = @a.end;
+
+for $end ... 1 -> $i
+{
+ for $i -1 ... 0 -> $j
+ {
+ if @a[$i] > @a[$j]
+ {
+ say ": index:$i -> @a[$i], index:$j -> @a[$j] (swap)" if $verbose;
+ my $n = @a[$i];
+ @a[$i] = @a[$j];
+ @a[$j] = $n;
+
+ @a[$j+1 .. *] = @a[$j+1 .. *].sort if $i > $j +1;
+
+ say "({ @a.join(", ") })";
+ exit;
+ }
+ elsif $verbose
+ {
+ say ": index:$i -> @a[$i], index:$j -> @a[$j] (skip)" if $verbose;
+ }
+ }
+}
+
+say "-1";