From e24bb02d6d8fd1d616648fe198525138359ad000 Mon Sep 17 00:00:00 2001 From: arnesom Date: Sun, 20 Nov 2022 22:50:13 +0100 Subject: Arne Sommer --- challenge-191/arne-sommer/blog.txt | 1 + challenge-191/arne-sommer/raku/ch-1.raku | 15 ++++++++++++++ challenge-191/arne-sommer/raku/ch-2.raku | 30 ++++++++++++++++++++++++++++ challenge-191/arne-sommer/raku/cute-list | 30 ++++++++++++++++++++++++++++ challenge-191/arne-sommer/raku/twice-largest | 15 ++++++++++++++ 5 files changed, 91 insertions(+) create mode 100644 challenge-191/arne-sommer/blog.txt create mode 100755 challenge-191/arne-sommer/raku/ch-1.raku create mode 100755 challenge-191/arne-sommer/raku/ch-2.raku create mode 100755 challenge-191/arne-sommer/raku/cute-list create mode 100755 challenge-191/arne-sommer/raku/twice-largest 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; -- cgit