Greetings.
I'm working on a program that will "descramble" words. Think of a word
scramble game where there is a list of characters, and several blank
spaces to denote the word(s) that you are to come up with from the list.
i.e.(* denotes a space): _ _ _ _ _ * _ _ _ _ _ _
characters: .hwodlelrlo
answer: hello world.
So, implemented as a c/c++ program, you would have something like:
<begin pseudo-c code>
char letters[11] = {'.','h','w','o','d','l','e','l','r','l','o'};
char PossibleWordOne[100][5];
char PossibleWordTwo[100][6];
//WordOneLength = 5;
//WordTwoLength = 6;
/* Ultimately, the goal is to not know the number of words or their
lengths or even the scrambled characters before execution, but this will
work for the example. I got the 100 because there should be no way of
getting more than 100 possible 'real' words*/
/* In order to make sure the combination of characters is a real word,
verify() will check it against a word list and return True or False Swap
will be a simple function (I hope it'll be simple anyways) that will swap
the characters into the next combination.*/
Permu()
{
static int counter = 1;
static int possibles = 0;
while (counter != 11!) /* Since there are 11! possible combinations */
if (!(Verify(Swap(letters*))
{ counter++;
Permu();
}
else
{
PossibleWordOne[possibles][] = letters*;
possibles++;
counter++;
Permu();
}
<end pseudo-c code>
Well, what do guys think? Any suggestions or sample code would be greatly
appreciated. In order to optimize performance, I would like to load the
word list directly into memory, and preferably have the words categorized
by length. This way, I can find the possible words for the longest word
first, and then go to the next longest. For example, let's say that I find
two possible combinations for the five-letter word. Then, I can seperate
them into two cases to find the four-letter word. Each case would have a
char array with 5 less chars than the original, which should make it a lot
faster to find the second word. Then let's say that only case two turns up
a possible combination for the four letter word. case one could then be
disguarded and you could move on to the next word... and on and on.
Anyways, that's what I've got so far... Like I said any suggestions would
be greatly appreciated.
Thanks,
Gaines 3 5904
"gdogg1587" <NO*********@SPAMearthlink.net> wrote in message
news:fb******************************@localhost.ta lkaboutprogramming.com... Greetings.
I'm working on a program that will "descramble" words. Think of a word scramble game where there is a list of characters, and several blank spaces to denote the word(s) that you are to come up with from the list. i.e.(* denotes a space): _ _ _ _ _ * _ _ _ _ _ _
characters: .hwodlelrlo
answer: hello world.
So, implemented as a c/c++ program, you would have something like: <begin pseudo-c code> char letters[11] = {'.','h','w','o','d','l','e','l','r','l','o'};
char PossibleWordOne[100][5]; char PossibleWordTwo[100][6]; //WordOneLength = 5; //WordTwoLength = 6; /* Ultimately, the goal is to not know the number of words or their lengths or even the scrambled characters before execution, but this will work for the example. I got the 100 because there should be no way of getting more than 100 possible 'real' words*/
/* In order to make sure the combination of characters is a real word, verify() will check it against a word list and return True or False Swap will be a simple function (I hope it'll be simple anyways) that will swap the characters into the next combination.*/
Permu() { static int counter = 1; static int possibles = 0; while (counter != 11!) /* Since there are 11! possible combinations */ if (!(Verify(Swap(letters*)) { counter++; Permu(); } else { PossibleWordOne[possibles][] = letters*; possibles++; counter++; Permu(); }
<end pseudo-c code>
Well, what do guys think? Any suggestions or sample code would be greatly appreciated. In order to optimize performance, I would like to load the word list directly into memory, and preferably have the words categorized by length. This way, I can find the possible words for the longest word first, and then go to the next longest. For example, let's say that I find two possible combinations for the five-letter word. Then, I can seperate them into two cases to find the four-letter word. Each case would have a char array with 5 less chars than the original, which should make it a lot faster to find the second word. Then let's say that only case two turns up a possible combination for the four letter word. case one could then be disguarded and you could move on to the next word... and on and on. Anyways, that's what I've got so far... Like I said any suggestions would be greatly appreciated.
I've written a similar program before, just for a laugh. To determine the
"legal" words that one can make, there's a simple, efficient approach that
doesn't take too much time to implement. Simply scan the entire list of
"legal" words, testing if it is a subset of the scrambled letters. This
tends to be pretty quick (virtually instantaneous on my machine), as there
are only around 180,000 words in the English language. Then, for each word
you can make that is of an appropriate length, examine each pair (or
whatever size tuple) to see if, together, they "use up" all of the scrambled
letters. Of course, you may have multiple correct answers. For other
programs, it may pay to try to do something "smarter", but, in my
experience, nothing fancy is required for a program like this. However, it
might get out of hand if you had a lot of letters that could make many
words, and there are many words in the sentence.
--
David Hilsee
Hmm... That's a pretty good idea. 18,000 is a lot less than 11! And a whole
lot less than 100!. And, I could categorize the word list by length of word
to make it even faster! That's great! Thanks.
Hmm... That's a pretty good idea. 18,000 is a lot less than 11! And a whole
lot less than 100!. And, I could categorize the word list by length of word
to make it even faster! That's great! Thanks. This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: The Roys |
last post by:
Hi
Im doing something wrong in quitting the Word.Application in my VB program.
I have
General Declarations
Dim AppWord As Word.Application
Form_Load()
Set AppWord =...
|
by: Microsoft |
last post by:
I'm trying to display a word document inside a web page, but everytime I do
I get this error:
Error Type:
Microsoft VBScript runtime (0x800A0046)
Permission denied: 'CreateObject'
Does...
|
by: Greg Andora |
last post by:
Hello,
I've had an ASP page that worked for at the minimum for a year and now it is acting very odd and I need some help to fix it. What my page does/did is creates a Word.Application object and...
|
by: MaxiWheat |
last post by:
Hi,
I am using a software that uses MS Word to create PDF files. When I try
to run the sample code (ASP 3.0), I get an error on this statement :
Set oWord =...
|
by: Petar Popara |
last post by:
I did everything as Kevin Yu explained here:
http://tinyurl.com/9tw6c
but it doesn't work. :(
I'm using WinXP Pro SP2 and latest IE. I don't have Office 2003 installed.
What should I do?
|
by: Darryl Kerkeslager |
last post by:
Below is a section of the code I use to open Word with late binding, insert
text at the selected bookmarks, and make Word visible. Everything works
fine. However, I also have some Word check...
|
by: Claus - Arcolutions |
last post by:
I got a word document as a stream, and I want to get the text from the word
document. But I cant seem to find anything to use for that purpose.
The "Microsoft office ?.object" com reference, only...
|
by: Filip De Backer |
last post by:
hi everyone,
I want a textbox with word layout.
And than save this text to a field in a sql server.
how can I do that?
thanks for the answers
Filip
|
by: Shar Shar |
last post by:
Hi All,
Actually I want to use "Word.ApplicationClass" class for opening a word file. And do following things,
1) Open word file.
2) Insert text in bookmark field.
3) Print resultant file as...
|
by: Kemmylinns12 |
last post by:
Blockchain technology has emerged as a transformative force in the business world, offering unprecedented opportunities for innovation and efficiency. While initially associated with cryptocurrencies...
|
by: Naresh1 |
last post by:
What is WebLogic Admin Training?
WebLogic Admin Training is a specialized program designed to equip individuals with the skills and knowledge required to effectively administer and manage Oracle...
|
by: jalbright99669 |
last post by:
Am having a bit of a time with URL Rewrite. I need to incorporate http to https redirect with a reverse proxy. I have the URL Rewrite rules made but the http to https rule only works for...
|
by: antdb |
last post by:
Ⅰ. Advantage of AntDB: hyper-convergence + streaming processing engine
In the overall architecture, a new "hyper-convergence" concept was proposed, which integrated multiple engines and...
|
by: AndyPSV |
last post by:
HOW CAN I CREATE AN AI with an .executable file that would suck all files in the folder and on my computerHOW CAN I CREATE AN AI with an .executable file that would suck all files in the folder and...
|
by: Arjunsri |
last post by:
I have a Redshift database that I need to use as an import data source. I have configured the DSN connection using the server, port, database, and credentials and received a successful connection...
|
by: Matthew3360 |
last post by:
Hi,
I have been trying to connect to a local host using php curl. But I am finding it hard to do this. I am doing the curl get request from my web server and have made sure to enable curl. I get a...
|
by: Oralloy |
last post by:
Hello Folks,
I am trying to hook up a CPU which I designed using SystemC to I/O pins on an FPGA.
My problem (spelled failure) is with the synthesis of my design into a bitstream, not the C++...
|
by: BLUEPANDA |
last post by:
At BluePanda Dev, we're passionate about building high-quality software and sharing our knowledge with the community. That's why we've created a SaaS starter kit that's not only easy to use but also...
| |