diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2022-04-23 23:22:26 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2022-04-23 23:22:26 +0100 |
| commit | ba876e63a7be29aca88bc4fab2e47667ec5863a8 (patch) | |
| tree | b713d65015fda2c5e6bbd5e5b08419b610d65d7a /challenge-161 | |
| parent | 09856afcbf621980d5905f48911447773ed48079 (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rw-r--r-- | challenge-161/laurent-rosenfeld/perl/ch-1.pl | 14 | ||||
| -rw-r--r-- | challenge-161/laurent-rosenfeld/perl/ch-2.pl | 16 | ||||
| -rw-r--r-- | challenge-161/laurent-rosenfeld/raku/ch-1.raku | 2 | ||||
| -rw-r--r-- | challenge-161/laurent-rosenfeld/raku/ch-2.raku | 10 |
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; |
