背后的故事
我正在创建一个语音控制的应用程序,使用x-webkit-speech
它非常好(功能,而不是我的应用程序),但有时用户(我)会咕哝一点。如果单词的某个合理部分与某个合理命令的某个合理部分匹配,那么接受该命令会很好。因此,我在 Set of Words 中寻找名为 Algorithm of the Greatest Intersect of Word 的圣杯。一些新鲜的聪明头脑能把我赶出绝望的洞穴吗?
例子
"rotation" in ["notable","tattoo","onclick","statistically"]
应该匹配纹身,因为它与旋转的相交时间最长(tat_o)。统计上是第二好的(tati intersect ),因为需要忽略单词的较长部分(但这是奖励条件,没有它也是可以接受的)。
笔记
- 我使用捷克语,发音非常接近书面形式
- javascript 是首选语言,但任何伪代码都是可以接受的
- 相交的最小长度应该是算法的参数
我尝试了什么?
嗯,还蛮尴尬的。。。。
for(var i=10; i>=4; --i) // reasonable substring
for(var word in words) // for all words in the set
for(var j=0; j<word.length-i; ++j) // search for any i substring
// aaargh... three levels of abstraction is too much for me