aboutsummaryrefslogtreecommitdiff
path: root/challenge-018
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2019-07-28 01:02:44 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2019-07-28 01:02:44 +0100
commitcf4e0810bafed04b13bb7872cb2bfcd1ae920864 (patch)
tree00da43267f405d5cbbc437a08b10cdb4ccb41056 /challenge-018
parent98391b4205b0ccc61d44bca97fa4cfc4d0dd4057 (diff)
downloadperlweeklychallenge-club-cf4e0810bafed04b13bb7872cb2bfcd1ae920864.tar.gz
perlweeklychallenge-club-cf4e0810bafed04b13bb7872cb2bfcd1ae920864.tar.bz2
perlweeklychallenge-club-cf4e0810bafed04b13bb7872cb2bfcd1ae920864.zip
- Added solutions by Arne Sommer.
Diffstat (limited to 'challenge-018')
-rw-r--r--challenge-018/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-018/arne-sommer/perl6/ch-1.p625
-rwxr-xr-xchallenge-018/arne-sommer/perl6/ch-2.p614
-rw-r--r--challenge-018/arne-sommer/perl6/lib/.precomp/.lock0
-rw-r--r--challenge-018/arne-sommer/perl6/lib/.precomp/B834E114E7A64AF8236503A5AE1E84F9F37C8B47/03/03D0BC625DDEC3BE511B7A604CF03963963B5CBFbin0 -> 10699 bytes
-rw-r--r--challenge-018/arne-sommer/perl6/lib/.precomp/B834E114E7A64AF8236503A5AE1E84F9F37C8B47/03/03D0BC625DDEC3BE511B7A604CF03963963B5CBF.repo-id1
-rw-r--r--challenge-018/arne-sommer/perl6/lib/PriorityQueue.pm630
7 files changed, 71 insertions, 0 deletions
diff --git a/challenge-018/arne-sommer/blog.txt b/challenge-018/arne-sommer/blog.txt
new file mode 100644
index 0000000000..ec2b70257a
--- /dev/null
+++ b/challenge-018/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://perl6.eu/substring-queues.html
diff --git a/challenge-018/arne-sommer/perl6/ch-1.p6 b/challenge-018/arne-sommer/perl6/ch-1.p6
new file mode 100755
index 0000000000..2d4e7b0b5f
--- /dev/null
+++ b/challenge-018/arne-sommer/perl6/ch-1.p6
@@ -0,0 +1,25 @@
+#! /usr/bin/env perl6
+
+sub MAIN (*@strings where @strings.elems >= 2)
+{
+ my %common = substrings( @strings.shift );
+
+ %common = %common ∩ substrings($_) for @strings;
+
+ .say for %common.keys.grep({ .chars == %common.keys>>.chars.max });
+}
+
+
+sub substrings ($string)
+{
+ my %substrings;
+
+ for ^$string.chars -> $i
+ {
+ for 1 .. $string.chars - $i -> $j
+ {
+ %substrings{ $string.substr($i, $j) } = True;
+ }
+ }
+ return %substrings;
+}
diff --git a/challenge-018/arne-sommer/perl6/ch-2.p6 b/challenge-018/arne-sommer/perl6/ch-2.p6
new file mode 100755
index 0000000000..7237e4e562
--- /dev/null
+++ b/challenge-018/arne-sommer/perl6/ch-2.p6
@@ -0,0 +1,14 @@
+#! /usr/bin/env perl6
+
+use lib "lib";
+
+use PriorityQueue;
+
+my $PQ = PriorityQueue.new;
+
+$PQ.insert_with_priority("AA$_", (^99).pick) for ^10;
+
+while ! $PQ.is_empty
+{
+ say $PQ.pull_highest_priority_element;
+} \ No newline at end of file
diff --git a/challenge-018/arne-sommer/perl6/lib/.precomp/.lock b/challenge-018/arne-sommer/perl6/lib/.precomp/.lock
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/challenge-018/arne-sommer/perl6/lib/.precomp/.lock
diff --git a/challenge-018/arne-sommer/perl6/lib/.precomp/B834E114E7A64AF8236503A5AE1E84F9F37C8B47/03/03D0BC625DDEC3BE511B7A604CF03963963B5CBF b/challenge-018/arne-sommer/perl6/lib/.precomp/B834E114E7A64AF8236503A5AE1E84F9F37C8B47/03/03D0BC625DDEC3BE511B7A604CF03963963B5CBF
new file mode 100644
index 0000000000..ae1304a28b
--- /dev/null
+++ b/challenge-018/arne-sommer/perl6/lib/.precomp/B834E114E7A64AF8236503A5AE1E84F9F37C8B47/03/03D0BC625DDEC3BE511B7A604CF03963963B5CBF
Binary files differ
diff --git a/challenge-018/arne-sommer/perl6/lib/.precomp/B834E114E7A64AF8236503A5AE1E84F9F37C8B47/03/03D0BC625DDEC3BE511B7A604CF03963963B5CBF.repo-id b/challenge-018/arne-sommer/perl6/lib/.precomp/B834E114E7A64AF8236503A5AE1E84F9F37C8B47/03/03D0BC625DDEC3BE511B7A604CF03963963B5CBF.repo-id
new file mode 100644
index 0000000000..52cb87c55b
--- /dev/null
+++ b/challenge-018/arne-sommer/perl6/lib/.precomp/B834E114E7A64AF8236503A5AE1E84F9F37C8B47/03/03D0BC625DDEC3BE511B7A604CF03963963B5CBF.repo-id
@@ -0,0 +1 @@
+DAADAA97D202102F50C02F99B89E28CFC6A3CFFF \ No newline at end of file
diff --git a/challenge-018/arne-sommer/perl6/lib/PriorityQueue.pm6 b/challenge-018/arne-sommer/perl6/lib/PriorityQueue.pm6
new file mode 100644
index 0000000000..9d2421eda9
--- /dev/null
+++ b/challenge-018/arne-sommer/perl6/lib/PriorityQueue.pm6
@@ -0,0 +1,30 @@
+use v6;
+
+unit class PriorityQueue;
+
+has %!queue;
+
+method is_empty
+{
+ return ! %!queue.elems;
+}
+
+method insert_with_priority ($payload, Int $priority)
+{
+ say ":: $payload ($priority)";
+
+ %!queue{$priority}.push: $payload;
+}
+
+method pull_highest_priority_element
+{
+ my $priority = %!queue.keys.max;
+
+ # say "Q: $priority -> " ~ @(%!queue{$priority});
+
+ my $element = @(%!queue{$priority}).shift;
+
+ %!queue{$priority}:delete unless @(%!queue{$priority}).elems;
+
+ return $element;
+}