#!/usr/bin/perl
# http://perlmonks.org/?node_id=1201500
use strict;
use warnings;
$| = 1;
my $file = '/usr/share/dict/words';
open my $fh, '<', $file or die "$! opening $file";
while(<$fh>)
{
chomp;
/[^a-z]/ and next;
"$_\n$_" =~ /^
(?= .* (.) .* \n (?: (?:(?!\1).)* \1 ){1} (?:(?!\1).)
+* $ )
(?= .{1,1} \n | .* (.) .* \n (?: (?:(?!\2).)* \2 ){2} (?:(?!\2).)
+* $ )
(?= .{1,3} \n | .* (.) .* \n (?: (?:(?!\3).)* \3 ){3} (?:(?!\3).)
+* $ )
(?= .{1,6} \n | .* (.) .* \n (?: (?:(?!\4).)* \4 ){4} (?:(?!\4).)
+* $ )
(?= .{1,10} \n | .* (.) .* \n (?: (?:(?!\5).)* \5 ){5} (?:(?!\5).)
+* $ )
(?= .{1,15} \n | .* (.) .* \n (?: (?:(?!\6).)* \6 ){6} (?:(?!\6).)
+* $ )
(?= .{1,21} \n | .* (.) .* \n (?: (?:(?!\7).)* \7 ){7} (?:(?!\7).)
+* $ )
(?= .{1,28} \n | .* (.) .* \n (?: (?:(?!\8).)* \8 ){8} (?:(?!\8).)
+* $ )
(?= .{1,35} \n )
/x and print "$_ ";
}
print "\n";
On my machine, this outputs:
a aah acacia add aha aka all allele app arr ass assays b baa banana ba
+obab bbl bedded bee bib bob bonobo boo bowwow brr bub c cocoon coo d
+dad dds deadheaded deemed did doodad dud e ebb eddied eek eel eerier
+eff effete egg eke ell ere err eve ewe eye f fee fesses foo g gag gee
+ gig goo h heeded hmm horror hubbub huh i ill inn inning j k l lee le
+ssee lii lollop loo m mam mammal manana messes mom moo mum n nee need
+ed non nun o odd off oho ooh opp p pap papaya pee peeped peeper pep p
+epped pepper pip pippin poo pop powwow ppm ppr pup q r reefer revere
+rococo s salsas see seeded senses sereneness settee shh sis sleeveles
+s sqq ssh t tat tattoo tee teeter teethe tit too tot tut u usu v vii
+w wedded wee weeded woo wow x xii xix xxi xxv xxviii xxxvii y z zoo
|