aboutsummaryrefslogtreecommitdiff
path: root/challenge-050
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-03-08 17:35:49 +0000
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-03-08 17:35:49 +0000
commita991bcee8cc55834f879128e5273b98199a91526 (patch)
tree06d07d1d0af8e53981c55a9423a4da1dd80a45a6 /challenge-050
parentb13c136421244186da002ebdc7387bea05f1f19a (diff)
downloadperlweeklychallenge-club-a991bcee8cc55834f879128e5273b98199a91526.tar.gz
perlweeklychallenge-club-a991bcee8cc55834f879128e5273b98199a91526.tar.bz2
perlweeklychallenge-club-a991bcee8cc55834f879128e5273b98199a91526.zip
- Added solutions by Laurent Rosenfeld.
Diffstat (limited to 'challenge-050')
-rw-r--r--challenge-050/laurent-rosenfeld/blog.txt1
-rw-r--r--challenge-050/laurent-rosenfeld/perl/ch-1.pl21
-rw-r--r--challenge-050/laurent-rosenfeld/perl/ch-2.pl15
-rw-r--r--challenge-050/laurent-rosenfeld/raku/ch-1.p619
-rw-r--r--challenge-050/laurent-rosenfeld/raku/ch-2.p68
5 files changed, 64 insertions, 0 deletions
diff --git a/challenge-050/laurent-rosenfeld/blog.txt b/challenge-050/laurent-rosenfeld/blog.txt
new file mode 100644
index 0000000000..d04388f53a
--- /dev/null
+++ b/challenge-050/laurent-rosenfeld/blog.txt
@@ -0,0 +1 @@
+http://blogs.perl.org/users/laurent_r/2020/03/perl-weekly-challenge-merge-inrervals-and-noble-numbers.html
diff --git a/challenge-050/laurent-rosenfeld/perl/ch-1.pl b/challenge-050/laurent-rosenfeld/perl/ch-1.pl
new file mode 100644
index 0000000000..387cbdb9aa
--- /dev/null
+++ b/challenge-050/laurent-rosenfeld/perl/ch-1.pl
@@ -0,0 +1,21 @@
+use strict;
+use warnings;
+use feature "say";
+use Data::Dumper;
+
+my @intervals = ([2,7], [3,4], [5,9], [10,12], [15,19], [18,22], [0,1], [24,35], [25,30]);
+@intervals = sort { $a->[0] <=> $b->[0] } @intervals;
+my @merged;
+# say Dumper \@intervals;
+my $current = $intervals[0];
+for my $i (1..$#intervals) {
+ if ($intervals[$i][0] > $current->[1]) {
+ push @merged, $current;
+ $current = $intervals[$i];
+ } else {
+ next unless $intervals[$i][1] > $current->[1];
+ $current->[1] = $intervals[$i][1];
+ }
+}
+push @merged, $current;
+say Dumper \@merged;
diff --git a/challenge-050/laurent-rosenfeld/perl/ch-2.pl b/challenge-050/laurent-rosenfeld/perl/ch-2.pl
new file mode 100644
index 0000000000..0cecdaae74
--- /dev/null
+++ b/challenge-050/laurent-rosenfeld/perl/ch-2.pl
@@ -0,0 +1,15 @@
+use strict;
+use warnings;
+use feature "say";
+
+my $list_size = int(rand 10) + 3;
+my @list = map {int(rand 50) + 1 } 1..$list_size;
+say $list_size, "/", "@list";
+
+# my @list = (2, 6, 1, 3,5, 8);
+
+@list = sort {$b <=> $a} @list; #descending sort
+say $list_size, " / ", "@list";
+for (0..$#list) {
+ say "$list[$_] is noble." if $list[$_] == $_;
+}
diff --git a/challenge-050/laurent-rosenfeld/raku/ch-1.p6 b/challenge-050/laurent-rosenfeld/raku/ch-1.p6
new file mode 100644
index 0000000000..b0183eb243
--- /dev/null
+++ b/challenge-050/laurent-rosenfeld/raku/ch-1.p6
@@ -0,0 +1,19 @@
+#!/usr/bin/env perl6
+
+use v6;
+
+my @intervals = [2,7], [3,4], [5,9], [10,12], [15,19], [18,22], [0,1], [24,35], [25,30];
+@intervals = sort { $_[0] }, @intervals;
+my @merged;
+my $current = @intervals[0];
+for 1..@intervals.end -> $i {
+ if (@intervals[$i][0] > $current[1]) {
+ push @merged, $current;
+ $current = @intervals[$i];
+ } else {
+ next unless @intervals[$i][1] > $current[1];
+ $current[1] = @intervals[$i][1];
+ }
+}
+push @merged, $current;
+say @merged;
diff --git a/challenge-050/laurent-rosenfeld/raku/ch-2.p6 b/challenge-050/laurent-rosenfeld/raku/ch-2.p6
new file mode 100644
index 0000000000..5589048099
--- /dev/null
+++ b/challenge-050/laurent-rosenfeld/raku/ch-2.p6
@@ -0,0 +1,8 @@
+use v6;
+
+my $list-size = (3..11).pick;
+my @list = (1..50).pick($list-size).sort.reverse;
+say @list;
+for (0..@list.end) {
+ say "@list[$_] is noble." if @list[$_] == $_;
+}