我正在创建word search并尝试通过验证单词集在整个网格中“均匀分布”来计算生成的谜题的质量。例如,连续放置每个单词,逐行填充它们并不是特别有趣,因为会有集群,用户会很快注意到一个模式。
如何衡量单词“均匀分布”的方式?
我想做的是编写一个程序,将单词搜索作为输入,输出一个评分拼图“质量”的分数。我想知道是否有人遇到过类似的问题并且可以向我推荐一些资源。也许统计数据中有一些概念可能会有所帮助?感谢。
答案 0 :(得分:4)
基本问题是在正方形或矩形中分布线条。您可以使用几何方式或使用整数数组执行此操作。我将在这里尝试整数数组。
让M成为你拼图的矩阵,
A B C D
E F G H
I J K L
M N O P
让“EFGH”这个词成为现存的词,以及“CGKO”。然后,创建一个矩阵,其中包含每个单元格中的eighter单词的成员计数:
0 0 1 0
1 1 2 1
0 0 1 0
0 0 1 0
应用规则:如果原始值为2或更高,则当前单元格值等于所有邻居的总和(4向)并与单元格的原始值相乘。
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
编辑:计算。错误已修复。