aboutsummaryrefslogtreecommitdiff
path: root/challenge-161
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2022-04-23 23:22:26 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2022-04-23 23:22:26 +0100
commitba876e63a7be29aca88bc4fab2e47667ec5863a8 (patch)
treeb713d65015fda2c5e6bbd5e5b08419b610d65d7a /challenge-161
parent09856afcbf621980d5905f48911447773ed48079 (diff)
downloadperlweeklychallenge-club-ba876e63a7be29aca88bc4fab2e47667ec5863a8.tar.gz
perlweeklychallenge-club-ba876e63a7be29aca88bc4fab2e47667ec5863a8.tar.bz2
perlweeklychallenge-club-ba876e63a7be29aca88bc4fab2e47667ec5863a8.zip
- Added solutions by Laurent Rosenfeld.
Diffstat (limited to 'challenge-161')
-rw-r--r--challenge-161/laurent-rosenfeld/blog.txt1
-rw-r--r--challenge-161/laurent-rosenfeld/perl/ch-1.pl14
-rw-r--r--challenge-161/laurent-rosenfeld/perl/ch-2.pl16
-rw-r--r--challenge-161/laurent-rosenfeld/raku/ch-1.raku2
-rw-r--r--challenge-161/laurent-rosenfeld/raku/ch-2.raku10
5 files changed, 43 insertions, 0 deletions
diff --git a/challenge-161/laurent-rosenfeld/blog.txt b/challenge-161/laurent-rosenfeld/blog.txt
new file mode 100644
index 0000000000..da0f910e11
--- /dev/null
+++ b/challenge-161/laurent-rosenfeld/blog.txt
@@ -0,0 +1 @@
+http://blogs.perl.org/users/laurent_r/2022/04/perl-weekly-challenge-161-abecedarian-words-and-pangrams.html
diff --git a/challenge-161/laurent-rosenfeld/perl/ch-1.pl b/challenge-161/laurent-rosenfeld/perl/ch-1.pl
new file mode 100644
index 0000000000..ef80890da6
--- /dev/null
+++ b/challenge-161/laurent-rosenfeld/perl/ch-1.pl
@@ -0,0 +1,14 @@
+my @abecedarian;
+my $dict = "./dictionary.txt";
+open my $IN, "<", $dict or die "Cannot open $dict $!";
+WORD: while (my $word = <$IN>) {
+ chomp $word;
+ my $old = 'a';
+ for my $char (split //, $word) {
+ next WORD if $char lt $old;
+ $old = $char;
+ }
+ push @abecedarian, $word;
+}
+my @out = sort { length $b <=> length $a } @abecedarian;
+say $_ for @out[0..25];
diff --git a/challenge-161/laurent-rosenfeld/perl/ch-2.pl b/challenge-161/laurent-rosenfeld/perl/ch-2.pl
new file mode 100644
index 0000000000..a3168ba8bb
--- /dev/null
+++ b/challenge-161/laurent-rosenfeld/perl/ch-2.pl
@@ -0,0 +1,16 @@
+use strict;
+use warnings;
+use feature "say";
+
+my (%seen, @pangram);
+my $dict = "./dictionary.txt";
+open my $IN, "<", $dict or die "Cannot open $dict $!";
+while (my $word = <$IN>) {
+ chomp $word;
+ my @new_letters = grep {not $seen{$_}} split //, $word;
+ next if @new_letters == 0;
+ $seen{$_} = 1 for @new_letters;
+ push @pangram, $word;
+ last if scalar keys %seen == 26;
+}
+say "@pangram";
diff --git a/challenge-161/laurent-rosenfeld/raku/ch-1.raku b/challenge-161/laurent-rosenfeld/raku/ch-1.raku
new file mode 100644
index 0000000000..09ecedb27c
--- /dev/null
+++ b/challenge-161/laurent-rosenfeld/raku/ch-1.raku
@@ -0,0 +1,2 @@
+my @abecedarian = 'dictionary.txt'.IO.lines.grep({[le] .comb});
+say (reverse sort {.chars}, @abecedarian)[0..25];
diff --git a/challenge-161/laurent-rosenfeld/raku/ch-2.raku b/challenge-161/laurent-rosenfeld/raku/ch-2.raku
new file mode 100644
index 0000000000..6a120a5ac8
--- /dev/null
+++ b/challenge-161/laurent-rosenfeld/raku/ch-2.raku
@@ -0,0 +1,10 @@
+my $seen = SetHash.new;
+my @pangram;
+for 'dictionary.txt'.IO.lines -> $word {
+ my @new_letters = grep {not $seen{$_}}, $word.comb;
+ next if @new_letters == 0;
+ $seen ∪= @new_letters; # set union operator
+ push @pangram, $word;
+ last if $seen.elems == 26;
+}
+say @pangram;