BetterBe
|
  |
| Joined: 25 Jan 2009 |
| Total Posts: 1034 |
|
|
| 10 Jan 2014 05:35 PM |
Okay so the last competition went great. A couple participated, and there was a lucky winner of 1000 robux! So now its time again to host competition #2! This competition will focus on more Conceptual Lua problem solving than GUI's. (Best GUI was the last competition.)
So, what is the competition.. when does it start.. and how much time do we have to complete it?
Competition: -Make your own algorithm for word correction. But specifically make a Function where you give a String perimeter (The Word your correcting) and it will output the word judged to be the word you meant, only spelled right. For Example:
CorrectWord('Th1s') --> should print the word 'This'.
But don't worry i'm not leaving it up to you to come up with every word in the dictionary; I have a free model set up with a multi-line string from which you will construct your word-bank from to correct the misspelled word here: http://www.roblox.com/Entire-English-language-item?id=136069703
When Does it start? Right now. As of the time you hear this, the competition is considered started for you.
When does it end and when do i need to submit an entry by? To be counted in the contest you MUST turn it in by 5:30PM 1/12/2014 American Central Time, in any way you see fit as turning it in, maybe a YouTube video, or however you can show it.
Rules: -Abide by the turn in date -Don't message me for 'help' on winning the contest. -Do not use free models, nor others works. If i find out you are using such things you will be disqualified from the competition.
Last Notes: -Yes i have indeed made my own Auto-Correction script, so i do know the level of difficulty it presents. -NOTE THIS: The Multi-line script containing the dictionary can only be read on play-solo considering its 69,000 lines+ and it wont work on 'Servers' Only the Local Host since strings on servers that are that long cant be read.
Good luck, -BetterBe |
|
|
| Report Abuse |
|
|
|
| 10 Jan 2014 05:41 PM |
s = "turt"
if s == "turt" then s = "turtle" end
auto correct |
|
|
| Report Abuse |
|
|
BetterBe
|
  |
| Joined: 25 Jan 2009 |
| Total Posts: 1034 |
|
| |
|
| |
|
|
| 10 Jan 2014 06:38 PM |
| Are you only meant to correct numbers, or do you have to correct spelling mistakes / suggest correct words too? |
|
|
| Report Abuse |
|
|
BetterBe
|
  |
| Joined: 25 Jan 2009 |
| Total Posts: 1034 |
|
|
| 10 Jan 2014 06:47 PM |
| This is for you to correct full 1 worded strings. (or than 1 word more if you want a upper hand in winning) |
|
|
| Report Abuse |
|
|
|
| 10 Jan 2014 06:49 PM |
hmm I might try to do this :P not promising anything
|
|
|
| Report Abuse |
|
|
|
| 10 Jan 2014 07:17 PM |
Would there be any efficiency standards? Or can my script take 1+ minute to find the correct word?
Alt. of Jetta765214 |
|
|
| Report Abuse |
|
|
|
| 10 Jan 2014 07:26 PM |
| Why on earth would it take that long? You can find a list of words in the dictionary online, turn it into a table and have a script cycle through them and find ones with relevance. |
|
|
| Report Abuse |
|
|
BetterBe
|
  |
| Joined: 25 Jan 2009 |
| Total Posts: 1034 |
|
|
| 10 Jan 2014 07:38 PM |
| the one i made finds words within a second lel. and it works completely. The most efficient and best working will win. Amount of lines does not matter for this competition |
|
|
| Report Abuse |
|
|
Absurdism
|
  |
| Joined: 18 Jul 2013 |
| Total Posts: 2568 |
|
|
| 10 Jan 2014 08:01 PM |
| We must have BC? Why? What if I don't want an award? |
|
|
| Report Abuse |
|
|
|
| 10 Jan 2014 08:09 PM |
| game.Players.aleksa12432:SetMemberShipType(3) |
|
|
| Report Abuse |
|
|
|
| 10 Jan 2014 08:36 PM |
hmm... it takes my auto correct script(Basic version of it) about 100 seconds to find the correct word...
Alt. of Jetta765214 |
|
|
| Report Abuse |
|
|
BetterBe
|
  |
| Joined: 25 Jan 2009 |
| Total Posts: 1034 |
|
|
| 10 Jan 2014 08:44 PM |
| @Absurdism if you don't want a reward and just the claimed winner of the competition, go for it ;p |
|
|
| Report Abuse |
|
|
|
| 10 Jan 2014 08:46 PM |
nvm, found out what my error is. My list of how close a word is to the test word is as long as the dictionary, changing the list length to 15 min made the script run in 1.7 seconds. instead of the previous 98.7 seconds.
Alt. of Jetta765214 |
|
|
| Report Abuse |
|
|
|
| 10 Jan 2014 09:19 PM |
| Please stop Capitalizing every other Word like This. |
|
|
| Report Abuse |
|
|
|
| 11 Jan 2014 10:22 AM |
| I'm entering !!!!! Make way for the lord himself!!! You fools stand no chance!! |
|
|
| Report Abuse |
|
|
|
| 11 Jan 2014 10:24 AM |
| Should it auto-correct shortened words like "wtvr" to "whatever"? Or is it meant for just spelling mistakes? |
|
|
| Report Abuse |
|
|
|
| 11 Jan 2014 10:27 AM |
I'm thinking of making it really complex with the thing considering vowels and what sound you would assume and stuff like that
But this is Lua and using the regular Lua interpreter, and with so many words I guess it will take like 5 minutes :( |
|
|
| Report Abuse |
|
|
|
| 11 Jan 2014 11:16 AM |
Results so far not good
TEST PASSED! what TEST FAILED! Test watever was corrected as caterer but should have been whatever TEST FAILED! Test whtevr was corrected as auteur but should have been whatever TEST FAILED! Test noodels was corrected as bordel but should have been noodles TEST FAILED! Test n00d3lz was corrected as apodal but should have been noodles TEST FAILED! Test 0r4ng3 was corrected as arenga but should have been orange TEST FAILED! Test l1k3 was corrected as lake but should have been like TEST FAILED! Test thier was corrected as thief but should have been their TEST PASSED! th31r TEST FAILED! Test parsi was corrected as farsi but should have been paris TEST FAILED! Test piars was corrected as diary but should have been pairs Tests done, success rate is 0.18181818181818% 2 tests failed and 9 tests failed. [Finished in 1.9s] |
|
|
| Report Abuse |
|
|
|
| 11 Jan 2014 11:44 AM |
'0.18181818181818%'
Don't you mean 18%? |
|
|
| Report Abuse |
|
|
|
| 11 Jan 2014 11:49 AM |
Changing "l1k3" to like is a somewhat debatable thing. In my code, 1 is used for the letter "l", not "i", so it would actually say "llke".
Before I do anything, I split the entire list into 26 tables, depending on the first letter of the word, to make it much quicker to search for a word in the future.
I do the changing of the numbers first, and then try to find the word in a list of other words with the same beginning letter (no need to search the entire 70000-or-so words).
Not really sure where I wanted to go from there though. Firstly I tried to find words which contained the word (e.g. ell could return hell, hello, bell, etc), then by finding any anagrams of the word (in case any of the letters were swapped round by accident), and then changing each letter in the word with all 26 letters in the alphabet to try and find a match.
However, this doesn't work too well at suggesting words when you miss out a letter. If I were to type "Rblox" instead of "Roblox" (and if "Roblox" was in the list too), my code wouldn't be able to find it and correct it. |
|
|
| Report Abuse |
|
|
BetterBe
|
  |
| Joined: 25 Jan 2009 |
| Total Posts: 1034 |
|
|
| 11 Jan 2014 12:09 PM |
@Everyone, This competition set no boundaries to exactly what your algorithm does. If you want it to purely correct 'Texting lagnuage' like L0l or 'wtvr' then go for it. The requirement is just to correct words, whatever that entails for your personal algorithm.
My algorithm gives correction to words that would normally be in someones vocabulary. Like Sp4rta turns to Sparta. (and yes ive actually tested that with mine ;p) |
|
|
| Report Abuse |
|
|
StBashkir
|
  |
| Joined: 29 Aug 2008 |
| Total Posts: 26171 |
|
|
| 11 Jan 2014 12:56 PM |
This works pretty well from what I've tested. I wasn't able to do a full-on test with a complete dictionary because I can't open it from my current device. But, basically, this just checks starting letters, then checks the differences between the word and a correction. Finally, it checks the percentage differences between the word and its possible corrections.
local words = { ['this'] = true; ['hello'] = true; ['goodbye'] = true; ['well'] = true; ['correct'] = true; ['xiao'] = true; }
function PercentageSimilar(word1, word2) local amount = math.max(#word1, #word2) local current = 0; for i = 1, #word1 do if (word2:lower()):find((word1:sub(i,i)):lower()) then current = current + 1 end end return current/amount; end
function SuggestCorrection(word) if not words[word] then -- Gather similar matches local threematches = {}; for i,v in pairs(words) do if math.max(#i, #word) - math.min(#i, #word) <= 2 then if PercentageSimilar(i, word) > .6 or (i:sub(1,1)) == (word:sub(1,1)) then table.insert(threematches, i) if #threematches == 3 then break end end end end return threematches else return true; -- word is in dictionary end end
print(unpack(SuggestCorrection("welp"))) |
|
|
| Report Abuse |
|
|
|
| 11 Jan 2014 03:35 PM |
>Don't you mean 18%?
Yeah, and it also says "2 tests failed and 9 tests failed"...ignore that...
Also it doesn't matter if I should correct stuff like "s00per L4U's L04d3d", just a matter of changing the numbers or symbols to letters, then it could just be a misspelling or typo.
Hard part is with pronunciation and such - obviously if they're trying to spell they're not going to put a "q" instead of "k", but a simple thing like what I have now has no way of telling that :P
Got to work on it tomorrow
By the way, where did you find that dictionary? I always look for stuff like that as usable text but I only find like dictionary apps and stuff :( |
|
|
| Report Abuse |
|
|