如果另一位玩家面对的是不同的牌面,那么你用五分钟完成一局纸牌,几乎说明不了对方那局七分钟的游戏如何。一局牌可能一开始就局面大开,另一局则可能需要几次谨慎的重新整理。每日挑战让所有人从同一个开局局面出发,从而让比较更有意义。

共享牌局只是第一个要求。我们还需要以一致的方式选出它、界定排行榜衡量的是什么,并避免从结果中解读出它们无法提供的信息。

让每个人面对同一个问题

对于每种游戏和变体,Cards4.net 都保存着一个种子库,其中的种子都已由离线求解器成功求解。种子是一个能复现开局牌局的数字。每日挑战使用游戏、变体和当前的 UTC 日期,从这些种子中选出一个。

选择过程使用哈希函数,把这些输入转换为种子库中的一个索引。给定相同的输入和种子库,它会选出相同的条目,因此早上打开挑战的玩家与当天晚些时候打开的玩家会得到同一局牌。UTC 为不同时区提供了统一的日期分界。

由于种子库是有限的,不同日期可能选中同一个条目。这种计算不会维护一份已用牌局的列表并将其排除。它还取决于种子库的内容和顺序,因此要复现历史上的某次选择,这些也是所需配置的一部分。

选择已确认的种子,意味着在相应规则下存在获胜路线。如果种子库不可用,每日挑战不能用一局未经检验的随机牌局来代替。那样会改变部分玩家面对的问题,也会失去“这局牌有解”的保证。

已解出的牌局仍可能很难

求解器确认了路径的存在,但它的成功并不能为人类玩家给这局牌评定难度。一个局面可能允许几条合理的路线,另一个则可能需要一步很容易被忽略的走法。

选择过程并不保证每天的难度相同。它还继承了求解器的局限:如果一局牌无法在求解器的搜索预算内完成,即使存在获胜路线,它也不会进入种子库。

因此,今天的成绩比昨天慢,并不一定意味着你打得更差。比较同一局牌的不同打法,比比较不相关牌局的用时更有参考价值。

排行榜衡量的是什么

我们的每日排行榜按服务器记录的用时对获胜成绩排序。如果两个用时相同,完成时间戳较早者排在前面。移动次数和提示次数会随成绩一起保存,但不会带来罚分,也不作为进一步的排序依据。

服务器从游戏会话中读取这些数值,并检查游戏状态是否确实获胜。它不会接受浏览器声称“这局只用了三秒”或“一个未完成的牌面已经完成”。每个账号在给定的游戏、变体和日期下只保存一条成绩;再次提交不会用更快的成绩替换那条记录。

这些规则定义了比较的方式。它们并不能让完成用时成为衡量判断力的完整标准。一个在研究不同方案的人可能比一个沿着熟悉路线打的人用时更长,而且一个很快的成绩也不能告诉你是哪些决定促成了它。

分母很重要

假设某次假想的挑战有 100 条已记录的获胜成绩,而你的用时比其中 80 条都快。你可以说你比 80% 的已记录获胜者完成得更快。但你不能得出你胜过了所有打开游戏的人中 80% 的结论,因为排行榜不会告诉你那些从未提交获胜成绩的人结果如何。

完成率需要不同的信息。如果开始挑战的 100 人中有 40 人完成了,那么完成率就是 40%。一份只包含这 40 个完成成绩的列表,无法提供缺失的开始人数。

这些只是示例数字,并非 Cards4.net 的使用数据。它们说明了为什么百分比需要同时注明所衡量的群体。一个看起来很精确的数字很容易算出来,即使它回答的是错误的问题。

平均值也需要同样的谨慎。在一个假想的集合中,五个完成用时分别为 2、3、4、5 和 26 分钟,平均值是 8 分钟,尽管有四名玩家比这更快完成。中位数是 4 分钟,即把用时排序后位于中间的成绩。两种计算都没有错;它们描述的是同一个小集合的不同方面。

用共享牌局比较决策

每日排行榜为你提供了一个比较具体成绩的地方。共享的牌面还让你事后可以提出更有用的问题:另一位玩家先清空了哪一列?你们的路线在哪里分岔?哪一步让对方免去了一次困难的重新整理?

这些问题把排行榜上的数字与你能学到的东西联系起来。当共同的开局局面让接下来的讨论围绕牌本身展开时,每日挑战才最有用。

常见问题

每日挑战对每个人都一样吗?

是的。游戏、变体和 UTC 日期会从对应的可解种子库中选出一个种子,因此参加该挑战的玩家都从同一局牌开始。

同一局牌会在另一天再次出现吗?

会。不同日期可能从有限的种子库中选中同一个条目。这种选择方式并不保证每天都是之前没出现过的牌局。

每日成绩如何排名?

获胜成绩按服务器记录的用时排序,用时相同时,完成时间戳较早者排在前面。移动次数和提示次数会被记录,但不作为额外的排序依据。

排行榜名次能衡量整体水平吗?

它衡量的是你在该挑战已记录的获胜成绩中的位置。它不包括所有开始游戏的人,而且一局牌无法衡量游戏水平的方方面面。

延伸阅读