aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-06-27 17:08:05 +0100
committerGitHub <noreply@github.com>2025-06-27 17:08:05 +0100
commit981687eccb188fbce864de4e78ae1048250bca0b (patch)
treec5e0ddb9133e2344e1707044d0b5e510eccb6505
parentad8b955019c0ebcf0d10020d2e704e193d6d5655 (diff)
parent65711d11f0b9f9a44fadf576655066add0926406 (diff)
downloadperlweeklychallenge-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.txt1
-rwxr-xr-xchallenge-327/arne-sommer/raku/ch-1.raku17
-rwxr-xr-xchallenge-327/arne-sommer/raku/ch-2.raku28
-rwxr-xr-xchallenge-327/arne-sommer/raku/mad28
-rwxr-xr-xchallenge-327/arne-sommer/raku/missing-integers17
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(", ") })";