aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorarnesom <arne@bbop.org>2022-11-20 22:50:13 +0100
committerarnesom <arne@bbop.org>2022-11-20 22:50:13 +0100
commite24bb02d6d8fd1d616648fe198525138359ad000 (patch)
tree065e63d25940d382512ea6fa8714bda2369a1311
parentd42316c80f0cf0c3943cd9d0237effd525101856 (diff)
downloadperlweeklychallenge-club-e24bb02d6d8fd1d616648fe198525138359ad000.tar.gz
perlweeklychallenge-club-e24bb02d6d8fd1d616648fe198525138359ad000.tar.bz2
perlweeklychallenge-club-e24bb02d6d8fd1d616648fe198525138359ad000.zip
Arne Sommer
-rw-r--r--challenge-191/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-191/arne-sommer/raku/ch-1.raku15
-rwxr-xr-xchallenge-191/arne-sommer/raku/ch-2.raku30
-rwxr-xr-xchallenge-191/arne-sommer/raku/cute-list30
-rwxr-xr-xchallenge-191/arne-sommer/raku/twice-largest15
5 files changed, 91 insertions, 0 deletions
diff --git a/challenge-191/arne-sommer/blog.txt b/challenge-191/arne-sommer/blog.txt
new file mode 100644
index 0000000000..56f3689b02
--- /dev/null
+++ b/challenge-191/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/twice-as-cute.html
diff --git a/challenge-191/arne-sommer/raku/ch-1.raku b/challenge-191/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..d112f9d91a
--- /dev/null
+++ b/challenge-191/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,15 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@list where @list.elems > 0 && all(@list) ~~ Int, :v(:$verbose));
+
+my @sorted = @list.sort;
+
+say ":Sorted: @sorted[]" if $verbose;
+
+my $largest = @sorted.pop;
+my $next = @sorted.pop;
+
+say ":Largest: $largest" if $verbose;
+say ":Next: $next" if $verbose;
+
+say ($largest >= $next * 2) ?? 1 !! -1;
diff --git a/challenge-191/arne-sommer/raku/ch-2.raku b/challenge-191/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..77b4e2542e
--- /dev/null
+++ b/challenge-191/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,30 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (UInt $n where 0 < $n <= 15, :v(:$verbose));
+
+my @list = (1 .. $n);
+
+say ":List: [{ @list.join(",") }]" if $verbose;
+
+my @permutations = @list.permutations;
+
+say ":Permutations: ", @permutations if $verbose;
+
+my $cute;
+
+for @permutations -> @permutation
+{
+ $cute++ if is-cute(@permutation);
+}
+
+say $cute;
+
+sub is-cute (@list)
+{
+ for 1 .. @list.elems -> $i
+ {
+ return 0 unless @list[$i -1] %% $i || $i %% @list[$i -1];
+ }
+
+ return 1;
+} \ No newline at end of file
diff --git a/challenge-191/arne-sommer/raku/cute-list b/challenge-191/arne-sommer/raku/cute-list
new file mode 100755
index 0000000000..77b4e2542e
--- /dev/null
+++ b/challenge-191/arne-sommer/raku/cute-list
@@ -0,0 +1,30 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (UInt $n where 0 < $n <= 15, :v(:$verbose));
+
+my @list = (1 .. $n);
+
+say ":List: [{ @list.join(",") }]" if $verbose;
+
+my @permutations = @list.permutations;
+
+say ":Permutations: ", @permutations if $verbose;
+
+my $cute;
+
+for @permutations -> @permutation
+{
+ $cute++ if is-cute(@permutation);
+}
+
+say $cute;
+
+sub is-cute (@list)
+{
+ for 1 .. @list.elems -> $i
+ {
+ return 0 unless @list[$i -1] %% $i || $i %% @list[$i -1];
+ }
+
+ return 1;
+} \ No newline at end of file
diff --git a/challenge-191/arne-sommer/raku/twice-largest b/challenge-191/arne-sommer/raku/twice-largest
new file mode 100755
index 0000000000..d112f9d91a
--- /dev/null
+++ b/challenge-191/arne-sommer/raku/twice-largest
@@ -0,0 +1,15 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@list where @list.elems > 0 && all(@list) ~~ Int, :v(:$verbose));
+
+my @sorted = @list.sort;
+
+say ":Sorted: @sorted[]" if $verbose;
+
+my $largest = @sorted.pop;
+my $next = @sorted.pop;
+
+say ":Largest: $largest" if $verbose;
+say ":Next: $next" if $verbose;
+
+say ($largest >= $next * 2) ?? 1 !! -1;