anagramQuandary.frink

View or download anagramQuandary.frink in plain text format


// Program to find words that do not contain all the letters of another word.


// Make a 2-d array
wordList = new array
for len=1 to 50
   wordList@len = new array

// Read words into the wordlist.
// The wordlist files are part of the Moby wordlist project, available at:
//   http://icon.shef.ac.uk/Moby/
for word = select[lines["file:/home/eliasen/prog/mobydict/mwords/crossword.txt"], %r/^[b-hj-z]{2,}$/]
   wordList@(length[word]).push[word]


for i = 50 to 1 step -1
{
   println[i]
   for w1 = wordList@i
   {
      found = false
   WORD1:
      for fewer = 2 to i-1
         for w2 = wordList@fewer
            if contains[w1, w2]
            {
               found = true
               break WORD1
            }
      if found == false  
         println[w1]
   }
}


// Returns true if word 1 contains word 2.
contains[word1, word2] :=
{
   a1 = chars[word1]
   for c2 = chars[word2]
      if (a1.removeValue[c2] == false)
         return false

   return true
}


View or download anagramQuandary.frink in plain text format


This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 17646 days, 9 hours, 37 minutes ago.