【问题标题】:Shortcut key assignment algorithm快捷键分配算法
【发布时间】:2016-02-15 15:09:59
【问题描述】:

我的程序中有多项选择菜单,如下所示:

Which option do you want? (choose one)
    f: First option
    s: Second option
    t: Third option

然后用户按fst 进行选择。对于这个例子,我手动选择了字母,应该很明显。

但在某些情况下存在冲突:假设我有一个Fourth option - 我不能使用f。明智的选择包括Fh 等,具体取决于用户体验理念。

有没有一种算法可以在给定字符串列表的情况下生成一个唯一的助记符字母来识别每个字符串?通过“助记符”,我的意思是选项应该建议字母(如在我的示例中),以便很容易记住哪个是哪个(而不是将所有内容映射到 a、b、c 或 x、y、z )。

正如我上面提到的,有多种方法可以做到这一点,具体取决于您的喜好:大写字母、第一个单词中的字母、次要唯一单词的字母等。对于这个问题,我并不关心这些,所以请随意使用您自己的规则 - 只要算法产生合理的用户友好结果。

【问题讨论】:

  • 标记hash 因为我本质上是在要求一个哈希函数,只是有非常具体和有些不寻常的要求。
  • 我认为您将不得不手动制定一组规则,例如 copy=c、cut=x、paste=v 和 this 具有最高优先级,然后是其他规则。最重要的是一致性,因此您必须同时查看所有菜单而不是孤立地查看,否则您最终可能会在不同位置为同一选项分配不同的字母。

标签: string algorithm hash language-agnostic user-friendly


【解决方案1】:

我见过使用的基线算法如下:

  1. 选择第一个字母(如您的示例中所示)。跟踪您选择的字母。
  2. 拍摄所选字母时,如果可用,请选择下一个字母。
  3. 如果没有更多字母,则按字典顺序选择一个(字母表中的第一个空闲字母)
  4. 如果没有更多字母,请不要选择任何内容,该选项将无法寻址。这对于也可点击的菜单很有意义。

当然,您可以应用一些调整:

  • 您的终端/操作系统约定区分大写和小写吗?您可以在第 2 步之后和第 3 步之前使用它(如果没有更多可用的字母,请使用大写字母)。

  • 你能使用和检测altctrlwin吗?

  • 是否有您需要维护的预先分配的快捷方式(例如要保存的 s)?在第一步之前分配它们。

【讨论】:

    猜你喜欢
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 2012-04-06
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多