aboutsummaryrefslogtreecommitdiff
path: root/challenge-191
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2022-11-15 19:26:53 +0000
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2022-11-15 19:26:53 +0000
commitdc5f9b00fe9de4b70fccc96b088b5629e90233d1 (patch)
tree7d625a5eedfdf0bf4551c5aaf7e4371eabe820d1 /challenge-191
parentd86f0a6e9d60b52336abab61bcf5bcb6aebc6240 (diff)
downloadperlweeklychallenge-club-dc5f9b00fe9de4b70fccc96b088b5629e90233d1.tar.gz
perlweeklychallenge-club-dc5f9b00fe9de4b70fccc96b088b5629e90233d1.tar.bz2
perlweeklychallenge-club-dc5f9b00fe9de4b70fccc96b088b5629e90233d1.zip
- Added solutions by Laurent Rosenfeld.
Diffstat (limited to 'challenge-191')
-rw-r--r--challenge-191/laurent-rosenfeld/blog.txt1
-rw-r--r--challenge-191/laurent-rosenfeld/perl/ch-1.pl12
-rw-r--r--challenge-191/laurent-rosenfeld/perl/ch-2.pl38
-rw-r--r--challenge-191/laurent-rosenfeld/raku/ch-1.raku7
-rw-r--r--challenge-191/laurent-rosenfeld/raku/ch-2.raku19
5 files changed, 77 insertions, 0 deletions
diff --git a/challenge-191/laurent-rosenfeld/blog.txt b/challenge-191/laurent-rosenfeld/blog.txt
new file mode 100644
index 0000000000..df50399e52
--- /dev/null
+++ b/challenge-191/laurent-rosenfeld/blog.txt
@@ -0,0 +1 @@
+http://blogs.perl.org/users/laurent_r/2022/11/perl-weekly-challenge-191-twice-largest-and-cute-list.html
diff --git a/challenge-191/laurent-rosenfeld/perl/ch-1.pl b/challenge-191/laurent-rosenfeld/perl/ch-1.pl
new file mode 100644
index 0000000000..a729e70a6b
--- /dev/null
+++ b/challenge-191/laurent-rosenfeld/perl/ch-1.pl
@@ -0,0 +1,12 @@
+use strict;
+use warnings;
+use feature qw/say/;
+
+sub is_twice_as_large {
+ my @sorted = sort { $b <=> $a } @_;
+ return $sorted[0] >= 2 * $sorted[1];
+}
+for my $test ( [<1 2 3 4>], [<1 2 0 5>],
+ [<2 6 3 1>], [<4 5 2 3>] ) {
+ say "@$test -> ", is_twice_as_large(@$test) ? 1 : -1;
+}
diff --git a/challenge-191/laurent-rosenfeld/perl/ch-2.pl b/challenge-191/laurent-rosenfeld/perl/ch-2.pl
new file mode 100644
index 0000000000..1d9b833b9c
--- /dev/null
+++ b/challenge-191/laurent-rosenfeld/perl/ch-2.pl
@@ -0,0 +1,38 @@
+use strict;
+use warnings;
+use feature qw/say/;
+
+my @permutations;
+
+sub is_cute {
+ my @new = (0, @_);
+ for my $i (1.. scalar @_) {
+ return 0 if $i % $new[$i] and $new[$i] % $i;
+ }
+ return 1;
+}
+
+sub permute {
+ my ($done, $left) = @_;
+ if (scalar @$left == 0) {
+ push @permutations, $done;
+ return;
+ }
+ my @left = @$left;
+ permute([ @$done, $left[$_]], [@left[0..$_-1], @left[$_+1..$#left]]) for 0..$#left;
+}
+
+sub count_cute {
+ my $k = shift;
+ my $count = 0;
+ @permutations = ();
+ permute([], [1..$k]);
+ for my $perm (@permutations) {
+ $count++ if is_cute @$perm;
+ }
+ return $count;
+}
+
+for my $j (1..10) {
+ say "$j -> ", count_cute $j;
+}
diff --git a/challenge-191/laurent-rosenfeld/raku/ch-1.raku b/challenge-191/laurent-rosenfeld/raku/ch-1.raku
new file mode 100644
index 0000000000..fb321abc5a
--- /dev/null
+++ b/challenge-191/laurent-rosenfeld/raku/ch-1.raku
@@ -0,0 +1,7 @@
+sub is-twice-as-large (@input) {
+ my @sorted = reverse sort @input;
+ return @sorted[0] >= 2 * @sorted[1];
+}
+for <1 2 3 4>, <1 2 0 5>, <2 6 3 1>, <4 5 2 3> -> @test {
+ say @test, " -> ", is-twice-as-large(@test) ?? 1 !! -1;
+}
diff --git a/challenge-191/laurent-rosenfeld/raku/ch-2.raku b/challenge-191/laurent-rosenfeld/raku/ch-2.raku
new file mode 100644
index 0000000000..2431e4a0e6
--- /dev/null
+++ b/challenge-191/laurent-rosenfeld/raku/ch-2.raku
@@ -0,0 +1,19 @@
+sub is-cute (@list) {
+ my @new = (0, @list).flat;
+ for 1..@list.elems -> $i {
+ return False unless $i %% @new[$i] or @new[$i] %% $i;
+ }
+ return True;
+}
+
+sub count-cute ($k) {
+ my $count = 0;
+ for (1..$k).permutations -> @perm {
+ $count++ if is-cute @perm;
+ }
+ return $count;
+}
+
+for 1..10 -> $j {
+ say "$j -> ", count-cute $j;
+}