游戏很简单,玩家看到单词,然后画给网络对面的玩家。对方看到图片,根据下面给出的候选字母拼出单词。
仔细想了一下,编程解决猜图画,难度比较大。但是可以解决根据已单词长度和候选字母,在字典中寻找符合这两个条件的单词作为候选,之后再由人肉方式得到最终答案。
首先需要准备字典,如果使用标准的字典序,在搜索时需要根据长度过滤单词。其实没有必要每次搜索的时候做,重新对单词进行排序,先按照长度比较大小,只有当长度相同时才按照字典序比较大小。之后就可以将单词整理成按照长度分隔的字典。
搜索时,参考拼写检查算法,将候选字母按照字母顺序排序成列表,将单词依次取出后,也把单词变形,将单词内的字母按照字母顺序排列。看单词的字母表是不是候选字母表的子集,如果是子集,者加入候选单词表。
使用一个有300,000单词组成的大字典字典进行测试。由于大部分情况下, Draw Something 的候选字母数量都是12,测试结果表明,对于长单词的猜测效果很好,比如这个例子:
目标单词长度为7,候选字母是:BEMPRTTTUWXZ。
在字典中搜索结果,唯一符合的是:TRUMPET。即正确答案,完全无须根据绘制的图像猜测单词。
对于短单词,则使用一个只有5000个单词组成的小字典,比如这个例子:
目标单词长度为3,候选字母是:BEHIKLNRSSUU。
最终的到10个候选单词,大大降低了猜测难度。
通过这个小程序的辅助,对于一些完全不着边际的情况,比如某律师画的这个:
很快就可以找到答案为 ROBOT。
大字典下载:http://115.com/file/e7lyhye9
原来您是想做个挂啊~
如果能做个全自动的挂,那毕业论文就不愁了
你。。。太可怕了T T。
你画的都很正常啦,只是某律师实在是让我怒了