diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2025-06-27 17:08:05 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-27 17:08:05 +0100 |
| commit | 981687eccb188fbce864de4e78ae1048250bca0b (patch) | |
| tree | c5e0ddb9133e2344e1707044d0b5e510eccb6505 | |
| parent | ad8b955019c0ebcf0d10020d2e704e193d6d5655 (diff) | |
| parent | 65711d11f0b9f9a44fadf576655066add0926406 (diff) | |
| download | perlweeklychallenge-club-981687eccb188fbce864de4e78ae1048250bca0b.tar.gz perlweeklychallenge-club-981687eccb188fbce864de4e78ae1048250bca0b.tar.bz2 perlweeklychallenge-club-981687eccb188fbce864de4e78ae1048250bca0b.zip | |
Merge pull request #12247 from arnesom/branch-for-challenge-327
Arne Sommer
| -rw-r--r-- | challenge-327/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-327/arne-sommer/raku/ch-1.raku | 17 | ||||
| -rwxr-xr-x | challenge-327/arne-sommer/raku/ch-2.raku | 28 | ||||
| -rwxr-xr-x | challenge-327/arne-sommer/raku/mad | 28 | ||||
| -rwxr-xr-x | challenge-327/arne-sommer/raku/missing-integers | 17 |
5 files changed, 91 insertions, 0 deletions
diff --git a/challenge-327/arne-sommer/blog.txt b/challenge-327/arne-sommer/blog.txt new file mode 100644 index 0000000000..63680a2da1 --- /dev/null +++ b/challenge-327/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/missing-mad.html diff --git a/challenge-327/arne-sommer/raku/ch-1.raku b/challenge-327/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..52a084114f --- /dev/null +++ b/challenge-327/arne-sommer/raku/ch-1.raku @@ -0,0 +1,17 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@ints where @ints.elems > 0 && all(@ints) ~~ Int, + :v(:$verbose)); + +my $max = @ints.elems; +my $set = @ints>>.Int.grep( 0 < * <= $max).Set; + +if $verbose +{ + say ": Range: 1 .. $max"; + say ": Matches: { $set.keys.sort.join(", ") }"; +} + +my @missing = (1..$max).grep({ ! so $set{$_} }); + +say "({ @missing.join(", ") })"; diff --git a/challenge-327/arne-sommer/raku/ch-2.raku b/challenge-327/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..dd15888081 --- /dev/null +++ b/challenge-327/arne-sommer/raku/ch-2.raku @@ -0,0 +1,28 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@ints where @ints.elems > 0 && all(@ints) ~~ Int + && @ints.elems == @ints.unique.elems, + :v(:$verbose)); + +my @sort = @ints.sort; +my @diff = (1 .. @sort.end).map({ @sort[$_] - @sort[$_ -1] }); +my $mad = @diff.min; +my $set = @ints>>.Int.Set; +my @result; + +if $verbose +{ + say ": Sorted: @sort[]"; + say ": Diff: @diff[]"; +} + +for sort $set.keys -> $k +{ + my $is-mad = so $set{$k + $mad}; + + @result.push: ($k, $k + $mad) if $is-mad; + + say ": $k, { $k + $mad } { $is-mad ?? "is MAD" !! "does not exist" }" if $verbose; +} + +say @result.raku;
\ No newline at end of file diff --git a/challenge-327/arne-sommer/raku/mad b/challenge-327/arne-sommer/raku/mad new file mode 100755 index 0000000000..dd15888081 --- /dev/null +++ b/challenge-327/arne-sommer/raku/mad @@ -0,0 +1,28 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@ints where @ints.elems > 0 && all(@ints) ~~ Int + && @ints.elems == @ints.unique.elems, + :v(:$verbose)); + +my @sort = @ints.sort; +my @diff = (1 .. @sort.end).map({ @sort[$_] - @sort[$_ -1] }); +my $mad = @diff.min; +my $set = @ints>>.Int.Set; +my @result; + +if $verbose +{ + say ": Sorted: @sort[]"; + say ": Diff: @diff[]"; +} + +for sort $set.keys -> $k +{ + my $is-mad = so $set{$k + $mad}; + + @result.push: ($k, $k + $mad) if $is-mad; + + say ": $k, { $k + $mad } { $is-mad ?? "is MAD" !! "does not exist" }" if $verbose; +} + +say @result.raku;
\ No newline at end of file diff --git a/challenge-327/arne-sommer/raku/missing-integers b/challenge-327/arne-sommer/raku/missing-integers new file mode 100755 index 0000000000..52a084114f --- /dev/null +++ b/challenge-327/arne-sommer/raku/missing-integers @@ -0,0 +1,17 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@ints where @ints.elems > 0 && all(@ints) ~~ Int, + :v(:$verbose)); + +my $max = @ints.elems; +my $set = @ints>>.Int.grep( 0 < * <= $max).Set; + +if $verbose +{ + say ": Range: 1 .. $max"; + say ": Matches: { $set.keys.sort.join(", ") }"; +} + +my @missing = (1..$max).grep({ ! so $set{$_} }); + +say "({ @missing.join(", ") })"; |
