确定在QWERTY键盘上打字的难度
我在寻找一个相对简单的算法,用来判断在QWERTY键盘布局上输入一个单词有多难。
这些单词不一定是字典里的词,所以不能用常见的错别字列表之类的东西。我相信一定有现成的、经过验证的算法,但我找不到相关的信息。
有没有人能提供一些帮助或建议?我正在用Python编写这个算法,但其他语言或伪代码也都可以。
4 个回答
拿出你的拼字游戏(Scrabble)套装,记下每个字母的分数,然后把一个单词的分数加起来,嘿,你就有了你的算法。虽然我不确定这是否完全符合你的需求,但这可能会给你一些有用的思路。比如,你可能想给字母不仅分配分数,还要给双字母组合和三字母组合分数。
我不知道有没有现成的信息可以用,也许你可以通过观察键盘,给更难的字母分配更高的分数:比如'a'得1分,'q'得8分,'m'得2分,依此类推。
补充说明:我好像在这里让大家更困惑了。以下是我提议的基本思路:
a) 列出英语(或你所用的语言)中所有的三字母组合和双字母组合。给每个组合分配一个打字难度分数。对单个字母也做同样的事情(毕竟,一个四个字母的单词可能是由一个三字母组合和一个字母组成,而不是两个双字母组合)。
b) 计算一个单词的打字难度分数,就是把它的组成部分的打字难度分数加起来。
至于难度分数,我也不太清楚,但你可以从键盘上的主键(home keys)开始,给这些字母打1分;对于用食指打但不是主键的字母,给2分;用手的第二或第三个手指打的字母,给3分,依此类推。然后对于双字母组合,顺序打字时,简单的字母得低分,难的字母得高分(比如qz,虽然这可能不适用于英语)。然后继续这样做。
我没有什么具体的算法可以推荐,但有几个小建议:
我用双手打字,这意味着键盘大致分成两半。经常会出现手之间的协调问题,也就是说,虽然每只手打出的字母顺序是对的,但组合起来却不对。比如说,打“the”这个词时,左手打
t
和e
,右手打h
,这样就会出现问题。打字时常常会“滑键”,也就是手指会不小心按到其他的键;还有“多按”或“少按”的情况,比如多按了一个键或者没有用力按到,这就意味着字母越多,打出正确单词的难度就越大。
大小写混用会让事情变得更复杂,因为需要在按下大写锁定键和打字之间保持同步,所以附近的字母键可能会出现大小写不对的情况。
希望这些能帮到你...
这里有一个关于QWERTY、Colemak和Dvorak键盘布局的比较,它计算了打字时手指移动的距离、同一只手打的键的百分比等等,代码是用Java写的。这些指标结合起来,可以很好地估算一个单词的“打字难易程度”。