diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2022-11-15 19:26:53 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2022-11-15 19:26:53 +0000 |
| commit | dc5f9b00fe9de4b70fccc96b088b5629e90233d1 (patch) | |
| tree | 7d625a5eedfdf0bf4551c5aaf7e4371eabe820d1 /challenge-191 | |
| parent | d86f0a6e9d60b52336abab61bcf5bcb6aebc6240 (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rw-r--r-- | challenge-191/laurent-rosenfeld/perl/ch-1.pl | 12 | ||||
| -rw-r--r-- | challenge-191/laurent-rosenfeld/perl/ch-2.pl | 38 | ||||
| -rw-r--r-- | challenge-191/laurent-rosenfeld/raku/ch-1.raku | 7 | ||||
| -rw-r--r-- | challenge-191/laurent-rosenfeld/raku/ch-2.raku | 19 |
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; +} |
