How to Create a Word Unscrambling Program?

  • Thread starter Thread starter Hybr!d
  • Start date Start date
  • Tags Tags
    Program
Click For Summary

Discussion Overview

The discussion revolves around creating a word unscrambling application, focusing on algorithms and data structures for efficiently matching jumbled words to a word list. Participants explore various programming approaches and optimizations.

Discussion Character

  • Exploratory, Technical explanation, Debate/contested

Main Points Raised

  • One participant proposes a basic algorithm in C that involves sorting the letters of a jumbled word and comparing it to a pre-sorted list of words.
  • Another participant suggests avoiding storing all words in memory and instead reading them from a file one at a time, sorting the characters for comparison.
  • A different approach is introduced that involves counting letters and calculating an ordinal sum for the characters, which could potentially reduce search time complexity.
  • Further optimization strategies are mentioned, including pre-computing values for words in the list to enhance runtime performance.

Areas of Agreement / Disagreement

Participants express differing opinions on the best method for implementing the unscrambling algorithm, indicating multiple competing views on optimization strategies and data handling.

Contextual Notes

Some methods discussed rely on specific assumptions about the word list's structure and the nature of the input words, which may not be universally applicable.

Who May Find This Useful

Programmers and developers interested in algorithm design, particularly in the context of string manipulation and optimization techniques.

Hybr!d
Messages
18
Reaction score
0
Hello Guys.

I was wondering how would you go around making an application that unjumbles words. It uses a wordlist and extracts the unjumbled word like.

jumbled: ial
unjumbled:ali

I hope someone got an idea. Thanx
 
Technology news on Phys.org
Here is a start in C:

word list:
Code:
char wordlist[4][8]={"all", "some", "small", "sine"};
char alpha[4][10]={0x0};


wordlist has four elements: each word we know how to unscramble
alpha is an alphabetically arranged set of characters from wordlist:
wordlist alpha
all all
some emos
small allms
sine eins

The algorithm is:
Code:
input a scrambled word
lowercase all the letters in the word
alphabetize the letters in the scrambled (just like we did for "alpha" above)
search thru each element of alpha to find an exact match
print the corresponding element in wordlist -
  i.e., if you find an exact match with "emos" print "some"
  else printf "not found in list"
 
mcnamara's onto a good start, but don't try to store all those words in memory!

First, sort the letters in the target word. Read the words from the word list (a text file) one at a time, sort the characters, and compare with the sorted target word.

- Warren
 
An even faster way would be to count the letters in the word and add up the ordinal of all the letters (1=a, 2=b, etc.). Then match the number of letters and total ordinal sum against your word list (where you've already computed these two numbers for each word, and sorted numerically), and then try permutations of your test word against the matched words from your word list. Should take the search from order(N) down to order(log[N]) or less, I would think...
 
berkeman,

There are a ton of different ways one could optimize this for run-time performance, particularly by storing pre-computations like the one you described.

- Warren
 
Thanx guys. I got a start
 

Similar threads

  • · Replies 9 ·
Replies
9
Views
5K
  • · Replies 43 ·
2
Replies
43
Views
8K
Replies
37
Views
6K
  • · Replies 22 ·
Replies
22
Views
2K
Replies
69
Views
11K
Replies
33
Views
4K
Replies
8
Views
3K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 6 ·
Replies
6
Views
3K
  • · Replies 8 ·
Replies
8
Views
3K