I think this is more of an algorithm question, not perl tho very
interesting to do it in perl.

I am not gr8 in algorithms , but this is what I will do 
Write a function that will return all the letters sorted in a word
For eg for the word home  , return ehmo


sub wkey {
  my(@l)=sort split(//,$_[0]);
  return join("",@l);
}

# Create a hash array  where the keys  are all possible combinations of 
# the letters in the string 'L' with the letters in each key sorted 
# alphabetically. 
# For eg if your string is "abc"
# $L="abc";
# %hash =  ( a=>1,b=>1,c=>1,ab=>1,ac=>,bc=>1,abc=>1);
#
#  How to do it ? That will be your homework :-) 
#

open(FILE,"W") || die "$!";
$/=" "; # Now read the file and read one word at a time
while(<FILE>){
  s/\s+//g;   # Get rid of all whitespace 
  if($hash{wkey($_)}) { 
     print "This word '$_' exists in the string\n";
  }
}

__END__

I hope someone in this group can give you a better algorithm

HTH
Ram




On Thu, 2004-05-27 at 10:44, Jim Witte wrote:
> Given a file of words W such as 'cat dog at home ...' (or perhaps read 
> into an array, though that would be a very large array), and a set of 
> letters L (a string 'aoeuidhtns' - perhaps put into a array), how would 
> I write a program to extract all words in W whose letters are all in L? 
>   I'm thinking of a program to generate a string of words for a 
> typing-tutor program.
> 
> Jim Witte
> [EMAIL PROTECTED]
> Indiana University CS
> 



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to