#!/usr/bin/perl # http://perlmonks.org/?node_id=1201500 use strict; use warnings; my $file = '/usr/share/dict/words'; open my $fh, '<', $file or die "$! opening $file"; chomp( my @words = grep /^[a-z]{5,}$/, <$fh>); my @good = grep frequencysequence($_), @words; print "@good\n\n" . @good . "\n"; sub frequencysequence { for my $n ( 1 .. ((-1 + sqrt 1 + 8 * length) / 2) =~ s/^(\d+)\..*/$1 + 1/er ) { "@_\n@_" =~ / (.).* \n (?: (?:(?!\1).)* \1 ){$n} (?:(?!\1).)* $ /x or return 0; } return 1; } #### acacia allele assays banana baobab bedded bonobo bowwow cocoon deadheaded deemed doodad eddied eerier effete fesses heeded horror hubbub inning lessee lollop mammal manana messes needed papaya peeped peeper pepped pepper pippin powwow reefer revere rococo salsas seeded senses sereneness settee sleeveless tattoo teeter teethe wedded weeded xxviii xxxvii 49