aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-01-26 17:18:58 +0000
committerGitHub <noreply@github.com>2025-01-26 17:18:58 +0000
commit8577a80498e051383b46cc325a26efed3cfb02b6 (patch)
tree0779e8eecf27d6f24a2cedbb7393435d1cc9ae4e
parent83fcfc9e2e9847d311e8cf8bf267ff97cdfea146 (diff)
parent5e5b5b100586fe780993c93a68fd4af995489709 (diff)
downloadperlweeklychallenge-club-8577a80498e051383b46cc325a26efed3cfb02b6.tar.gz
perlweeklychallenge-club-8577a80498e051383b46cc325a26efed3cfb02b6.tar.bz2
perlweeklychallenge-club-8577a80498e051383b46cc325a26efed3cfb02b6.zip
Merge pull request #11490 from arnesom/branch-for-challenge-305
Arne Sommer
-rw-r--r--challenge-305/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-305/arne-sommer/raku/alien-dictionary36
-rwxr-xr-xchallenge-305/arne-sommer/raku/binary-prefix20
-rwxr-xr-xchallenge-305/arne-sommer/raku/ch-1.raku20
-rwxr-xr-xchallenge-305/arne-sommer/raku/ch-2.raku36
5 files changed, 113 insertions, 0 deletions
diff --git a/challenge-305/arne-sommer/blog.txt b/challenge-305/arne-sommer/blog.txt
new file mode 100644
index 0000000000..9c8cbf17a9
--- /dev/null
+++ b/challenge-305/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/prefixed-alien.html
diff --git a/challenge-305/arne-sommer/raku/alien-dictionary b/challenge-305/arne-sommer/raku/alien-dictionary
new file mode 100755
index 0000000000..6893591bb8
--- /dev/null
+++ b/challenge-305/arne-sommer/raku/alien-dictionary
@@ -0,0 +1,36 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@words where @words.elems > 1 && all(@words) ~~ /^<[a..z]>+$/,
+ :a(:$alien) where $alien.comb.sort.join eq "abcdefghijklmnopqrstuvwxyz",
+ :v(:$verbose));
+
+my @alien = $alien.comb;
+my @alpha = 'a' .. 'z';
+my %alien;
+my %words;
+
+for @alpha -> $char
+{
+ %alien{$char} = @alien.shift;
+ say ": char $char -> %alien{$char}" if $verbose;
+}
+
+for @words -> $word
+{
+ %words{$word} = alienate($word);
+ say ": word $word -> %words{$word}" if $verbose;
+}
+
+sub alien ($char)
+{
+ return %alien{$char};
+}
+
+sub alienate ($string)
+{
+ return $string.comb>>.&alien.join;
+}
+
+my @sorted = @words.sort({ %words{$^a} cmp %words{$^b} });
+
+say "({ @sorted.map('"' ~ * ~ '"').join(", ") })";
diff --git a/challenge-305/arne-sommer/raku/binary-prefix b/challenge-305/arne-sommer/raku/binary-prefix
new file mode 100755
index 0000000000..f6c8558c50
--- /dev/null
+++ b/challenge-305/arne-sommer/raku/binary-prefix
@@ -0,0 +1,20 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@binary where @binary.elems > 0 && all(@binary) eq any(0,1),
+ :v(:$verbose));
+
+my $current = "";
+my @result;
+
+for @binary -> $digit
+{
+ $current ~= $digit;
+
+ my $int = $current.parse-base(2);
+ my $prime = $int.is-prime;
+
+ say ": Binary:$current Int:$int { $prime ?? "prime" !! "not prime" }" if $verbose;
+ @result.push: $prime;
+}
+
+say "({ @result.join(", ")  })";
diff --git a/challenge-305/arne-sommer/raku/ch-1.raku b/challenge-305/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..f6c8558c50
--- /dev/null
+++ b/challenge-305/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,20 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@binary where @binary.elems > 0 && all(@binary) eq any(0,1),
+ :v(:$verbose));
+
+my $current = "";
+my @result;
+
+for @binary -> $digit
+{
+ $current ~= $digit;
+
+ my $int = $current.parse-base(2);
+ my $prime = $int.is-prime;
+
+ say ": Binary:$current Int:$int { $prime ?? "prime" !! "not prime" }" if $verbose;
+ @result.push: $prime;
+}
+
+say "({ @result.join(", ")  })";
diff --git a/challenge-305/arne-sommer/raku/ch-2.raku b/challenge-305/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..6893591bb8
--- /dev/null
+++ b/challenge-305/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,36 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@words where @words.elems > 1 && all(@words) ~~ /^<[a..z]>+$/,
+ :a(:$alien) where $alien.comb.sort.join eq "abcdefghijklmnopqrstuvwxyz",
+ :v(:$verbose));
+
+my @alien = $alien.comb;
+my @alpha = 'a' .. 'z';
+my %alien;
+my %words;
+
+for @alpha -> $char
+{
+ %alien{$char} = @alien.shift;
+ say ": char $char -> %alien{$char}" if $verbose;
+}
+
+for @words -> $word
+{
+ %words{$word} = alienate($word);
+ say ": word $word -> %words{$word}" if $verbose;
+}
+
+sub alien ($char)
+{
+ return %alien{$char};
+}
+
+sub alienate ($string)
+{
+ return $string.comb>>.&alien.join;
+}
+
+my @sorted = @words.sort({ %words{$^a} cmp %words{$^b} });
+
+say "({ @sorted.map('"' ~ * ~ '"').join(", ") })";