diff options
| author | bagheera-sands <git@sandsscouts.org.uk> | 2019-04-30 00:56:14 +0100 |
|---|---|---|
| committer | bagheera-sands <git@sandsscouts.org.uk> | 2019-04-30 00:56:14 +0100 |
| commit | fe9360b22574abda0ae267f0ef7a18446d3280f2 (patch) | |
| tree | 23d9d5746138e722e496ab71881912fe52bc4316 /challenge-005/john-barrett/perl5 | |
| parent | cec6581d6bb64aab7cf23f0ee4f1c9c08702dcb0 (diff) | |
| parent | 2f5ee8d01e0212d9c8e587014b0df2710e0b0ef1 (diff) | |
| download | perlweeklychallenge-club-fe9360b22574abda0ae267f0ef7a18446d3280f2.tar.gz perlweeklychallenge-club-fe9360b22574abda0ae267f0ef7a18446d3280f2.tar.bz2 perlweeklychallenge-club-fe9360b22574abda0ae267f0ef7a18446d3280f2.zip | |
Merge branch 'master' of github.com:manwar/perlweeklychallenge-club
Diffstat (limited to 'challenge-005/john-barrett/perl5')
| -rwxr-xr-x | challenge-005/john-barrett/perl5/ch-1.pl | 20 | ||||
| -rwxr-xr-x | challenge-005/john-barrett/perl5/ch-2.pl | 27 |
2 files changed, 47 insertions, 0 deletions
diff --git a/challenge-005/john-barrett/perl5/ch-1.pl b/challenge-005/john-barrett/perl5/ch-1.pl new file mode 100755 index 0000000000..6da945d981 --- /dev/null +++ b/challenge-005/john-barrett/perl5/ch-1.pl @@ -0,0 +1,20 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use autodie; + +my $word = sortedlc( $ARGV[0] ); +my $wordlength = length $word; + +sub sortedlc { join '', sort { $a cmp $b } split '', lc $_[0] } + +sub is_anagram { + my ( $dictword ) = @_; + return 0 if length $dictword != $wordlength; + $word eq sortedlc $dictword; +} + +open my $fh, '<:encoding(UTF-8)', '/usr/share/dict/words'; +chomp( my @dict = <$fh> ); +print "$_\n" for grep { is_anagram( $_ ) } @dict; diff --git a/challenge-005/john-barrett/perl5/ch-2.pl b/challenge-005/john-barrett/perl5/ch-2.pl new file mode 100755 index 0000000000..0235c417bc --- /dev/null +++ b/challenge-005/john-barrett/perl5/ch-2.pl @@ -0,0 +1,27 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use autodie; + +sub sortedlc { join '', sort { $a cmp $b } split '', lc $_[0] } + +open my $fh, '<:encoding(UTF-8)', '/usr/share/dict/words'; +chomp( my @dict = <$fh> ); + +my %signatures; +$signatures{ sortedlc( $_ ) }++ for @dict; +my %by_count = reverse %signatures; + +my $max = ( sort { $b <=> $a } keys %by_count )[0]; +my $word = $by_count{$max}; +my $wordlength = length $word; + +sub is_anagram { + my ( $dictword ) = @_; + return 0 if length $dictword != $wordlength; + $word eq sortedlc $dictword; +} + +print "(A) longest anagram set from '$word':\n"; +print "$_\n" for grep { is_anagram( $_ ) } @dict; |
