// Program to find the longest word that can be made by appending or prepending // letters to the beginning or end of an existing word. a=eval[input["Enter procedure: 1.) append only 2.) prepend only 3.) both "]] words = new set // 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 = lines["file:/home/eliasen/prog/mobydict/mwords/crossword.txt"] words.put[lc[word]] wordQueue = ["a", "i"] while (length[wordQueue] > 0) { w = wordQueue.popFirst[] for c = char["a"] to char["z"] { ch = char[c] if (a==1 or a==3) { wnew = "$w$ch" // Append letters if (words.contains[wnew]) { wordQueue.push[wnew] println[wnew] } } if (a==2 or a==3) { wnew = "$ch$w" // Prepend letters if (words.contains[wnew]) { wordQueue.push[wnew] println[wnew] } } } }