Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re^2: Renaming the Schwartzian Transform

by QM (Vicar)
on Sep 21, 2005 at 20:18 UTC ( #493952=note: print w/ replies, xml ) Need Help??


in reply to Re: Renaming the Schwartzian Transform
in thread Renaming the Schwartzian Transform

You may get more words by searching.
From my own personal dictionary, including lots of arcane, obsolete, and dubious entries:
Longest: 6
archchronicler
bergschrund
festschrift
fruchtschiefer
latchstring
lengthsman
postphthisic
veldtschoen
Funny how many of these seem to be Germanic in origin.

Here's the code I used:

#!/your/perl/here # find word with most consecutive vowels and/or consonants use strict; use warnings; # treat y as a vowel, not a consonant my $VOWELS = qr/([aeiouy]+)/i; my $CONSONANTS = qr/([b-df-hj-np-tv-xz]+)/i; my $longest_vowels = {}; my $longest_consonants = {}; while (<>) { # only lower case (no proper names) # only single words next unless /^[a-z]+$/; $longest_vowels = find_longest( $_, $VOWELS, $longest_vowe +ls ); $longest_consonants = find_longest( $_, $CONSONANTS, $longest_cons +onants ); } foreach my $record ($longest_vowels, $longest_consonants) { my $length = (keys %{$record})[0]; print "($length) ", join( '', sort @{$record->{$length}}), "\n"; } ###################### # given word, regex, and hashref, # return a hashref with words having the longest consecutive regex mat +ch # hash should only have 1 key (longest length run), # hash value is array of words with "length" run sub find_longest { my $word = shift; my $regex = shift; my $previous = shift; # hashref # only one key should exist my ($length) = (keys %{$previous})[0] or 0; # find all matches in the current word my @matches = $word =~ /$regex/g; # reverse sort matches by length @matches = sort { length($b) <=> length($a) } @matches; foreach my $match ( @matches ) { # no more interesting matches? last if ($length > length($match)); # equal length, add to list if ( $length == length($match) ) { push @{$previous->{$length}}, $word; } else # new length, start new list { $length = length($match); $previous = { $length => [$word] }; } # uncomment to watch it run # print STDERR "$regex) ($length) $word"; } return $previous; }

-QM
--
Quantum Mechanics: The dreams stuff is made of


Comment on Re^2: Renaming the Schwartzian Transform
Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://493952]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (14)
As of 2015-07-06 16:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (77 votes), past polls