diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2024-11-10 19:47:25 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-10 19:47:25 +0000 |
| commit | 3ace4b8c6619dbe1ebf536c586238c40d5fb9f76 (patch) | |
| tree | 1da703a457ad17a165f0ad9be5c6d3fa6884402a | |
| parent | a11afbcf9fabe9503fe651c94277437767a939f5 (diff) | |
| parent | 4ab4ed913afac1651b20692cf4a9d3a58805487f (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-294/arne-sommer/raku/ch-1.raku | 24 | ||||
| -rwxr-xr-x | challenge-294/arne-sommer/raku/ch-2.raku | 36 | ||||
| -rwxr-xr-x | challenge-294/arne-sommer/raku/consecutive-sequence | 24 | ||||
| -rwxr-xr-x | challenge-294/arne-sommer/raku/next-permutation | 34 | ||||
| -rwxr-xr-x | challenge-294/arne-sommer/raku/next-permutation-sort | 36 |
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"; |
