小编Bob*_*Jim的帖子

存储内存占用少的大字典+快速查找的方法(在Android上)

我正在开发一个需要大量(~25万字词典)的安卓文字游戏应用程序.我需要:

  • 合理快速查找例如恒定时间更好,需要每秒执行200次查找以解决单词拼图,并且可能更频繁地在0.2秒内进行20次查找以检查用户刚刚拼写的单词.

编辑:查询通常会问"在字典中吗?".我想在这个单词中支持最多两个通配符,但这很容易,只需生成通配符可能存在的所有可能的字母并检查生成的单词(即26*26查找带有两个通配符的单词) .

  • 因为它是一个移动应用程序,使用尽可能少的内存并且只需要少量初始下载字典数据是首要任务.

我的第一次天真尝试使用了Java的HashMap类,这导致了内存不足异常.我已经研究过使用android上可用的SQL lite数据库,但这看起来有些过分.

做我需要的好方法是什么?

java algorithm complexity-theory android data-structures

22
推荐指数
2
解决办法
1万
查看次数

为单词搜索游戏选择随机字母的算法,允许拼写多个单词

我正在做一个类似boggle的文字游戏.给用户一个这样的字母网格:

O V Z W X
S T A C K
Y R F L Q
Run Code Online (Sandbox Code Playgroud)

用户使用任何相邻的字母链来挑选一个单词,例如跨越中间线的单词"STACK".然后用机器替换所用的字母,例如(小写的新字母):

O V Z W X
z e x o p
Y R F L Q
Run Code Online (Sandbox Code Playgroud)

请注意,您现在可以使用新字母拼写"OVeRFLoW".我的问题是:我可以使用什么算法来选择最大化用户可以拼写的长词数量的新字母?我希望游戏很有趣并且有时会拼写6个字母的单词,但是,如果你选择了不好的字母,游戏会让用户只拼写3个字母单词并且没有机会找到更大的单词.

例如:

  • 您可以随机选择字母表中的新字母.这不行.

  • 同样,我发现随机挑选,但使用Scrabble的字母频率效果不佳.这在Scrabble中效果更好我认为你对使用字母的顺序的约束较少.

  • 我尝试了一组列表,每个列表代表一个来自Boggle游戏的模具,每个字母都是从随机模具中挑选出来的(我也想知道我是否可以合法地在产品中使用这些数据).我没注意到这个工作得很好.我认为Boggle骰子的侧面是以一种合理的方式选择的,但我无法找到这是怎么做的.

我考虑过的一些想法:

  • 列出字母对中字母对的出现频率.为了论证,可以说E在30%的时间旁边被看到.当我选择一个新的字母时,我会根据这个字母的频率随机选择一个字母,该字母出现在网格上随机选择的相邻字母旁边.例如,如果相邻的字母是E,则新字母在30%的时间内将是"A".应该意味着在地图上分散使用很多不错的对.我可以通过在两个其他字母之间出现一个字母的概率表来改善这一点.

  • 以某种方式搜索当前网格上拼写的单词,将新单词作为通配符.然后我会用允许拼写最大单词的字母替换通配符.但是我不确定你会如何有效地做到这一点.

任何其他想法表示赞赏.我想知道是否有一种解决这个问题的常用方法以及其他文字游戏使用的方法.

编辑:感谢您迄今为止的精彩答案!我忘了提一下,如果可能的话,我的目标是低内存/ cpu要求,我可能会使用SOWPODS字典(约250,000),我的网格将能够6 x 6.

java algorithm computer-science linguistics

14
推荐指数
2
解决办法
4262
查看次数

上传到手机后自动启动Android应用?

在Android应用程序开发期间,我经常做以下事情:

  1. 运行"ant reinstall"以编译并将应用程序上传到模拟器.
  2. 切换到模拟器窗口.
  3. 单击我刚刚上传的包运行并测试它.

有什么办法可以告诉模拟器手机运行我刚刚上传的软件包吗?也许我运行编译脚本后可以发送一个"adb"命令?作为最后的手段,我想我可以为我运行模拟鼠标点击的东西.

java android

5
推荐指数
1
解决办法
1245
查看次数