【问题标题】:Evaluating the distribution of words in a grid评估网格中单词的分布
【发布时间】:2011-01-06 20:40:24
【问题描述】:

我正在创建一个word search 并尝试通过验证单词集在整个网格中“均匀分布”来计算生成的谜题的质量。例如,将每个单词连续放置,逐行填充它们并不是特别有趣,因为会有集群并且用户会很快注意到一个模式。

如何衡量单词的“均匀分布”程度?

我想做的是编写一个程序,将单词搜索作为输入,并输出一个评估拼图“质量”的分数。我想知道是否有人见过类似的问题并可以向我推荐一些资源。也许统计中有一些概念可能会有所帮助?谢谢。

【问题讨论】:

标签: algorithm math statistics


【解决方案1】:

基本问题是线在正方形或矩形中的分布。您可以通过几何方式或使用整数数组来执行此操作。我会在这里尝试整数数组。

让 M 成为你的谜题的矩阵,

A B C D
E F G H
I J K L
M N O P

让单词“EFGH”和“CGKO”一样是一个存在的单词。然后,创建一个矩阵,该矩阵将包含每个单元格中八个单词的成员计数:

0 0 1 0
1 1 2 1
0 0 1 0
0 0 1 0

应用规则:当前单元格值等于所有相邻单元格的总和(4 路),如果原始值为 2 或更高,则乘以单元格的原始值。

0 0 1 0      1 2 2 2
1 1 2 1  -\  1 3 8 2
0 0 1 0  -/  1 2 3 2
0 0 1 0      0 1 1 1

并对矩阵的行和列中的所有值求和:

1 2 2 2 =  7
1 3 8 2 = 14
1 2 3 2 =  8
0 1 1 1 =  3
| | | |
3 7 | 6
    14

然后计算两个结果集的平均值:

(7 + 14 + 8 + 3) / 4 = 32 / 4 = 8
(3 + 7 + 14 + 6) / 4 = 30 / 4 = 7.5

并计算每个结果集的平均差:

3  <-> 7.5 = 4.5       7  <-> 8 = 1
7  <-> 7.5 = 0.5       14 <-> 8 = 6
14 <-> 7.5 = 6.5       8  <-> 8 = 0
6  <-> 7.5 = 1.5       3  <-> 8 = 5
             ___avg               ___avg
             3.25                 3

然后将它们相乘:

3 * 3.25 = 9.75

您将其视为分布分数。您可能需要对其进行一些调整以使其更好地工作,但这应该可以很好地计算分布分数。

这是一个错误分布的例子:

1 0 0 0      1 1 0 0      2
1 0 0 0  -\  2 1 0 0  -\  3         -\  C avg 2.5  -\  C avg-2-avg 0.5
1 0 0 0  -/  2 1 0 0  -/  3         -/  R avg 2.5  -/  R avg-2-avg 2.5
1 0 0 0      1 1 0 0      2                                       _____*
                           6 4 0 0                                 1.25 < score

编辑:计算。错误已修复。

【讨论】:

  • 哇,这是一个了不起的算法。感谢您花时间写下回复,我真的很感激!顺便说一句,如果我对细节感兴趣,该算法是否有名称或是否有参考资料(如算法教科书)我可以跟进?我也认为我在总结中发现了一个错误。这是更正。 0 0 1 0 1 2 2 2 1 1 2 1 -\ 1 3 8 2 0 0 1 0 -/ 1 2 3 2 0 0 1 0 0 1 1 1 再次感谢您的分享!
  • 格式破坏了更正,但在步骤“应用规则:当前单元格值等于所有相邻单元格的总和(4 路)并乘以单元格的原始值之后的第一行,如果原始值为 2 或更高。”应该是 1 2 2 2
  • 此外,这与您的回复无关,但即使我明确标记了复选框以注册对此线程的更改,我也没有收到您的回复通知。该功能似乎已损坏。
  • 对不起,没有参考,也没有名字。感谢您的指正。该功能实际上并没有被破坏:它会在 1 天后给您发送电子邮件,将所有新的回复和答案附加到一条大消息中。如果你今天没有检查 SO,你明天就会得到一个。
猜你喜欢
  • 2013-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
  • 2021-09-25
相关资源
最近更新 更多