编程竞赛:交易(中期结果和公告)

非常感谢编程竞赛的所有参与者! 决策过程尚未完成,但是在7月17日午夜时分,我们做出了当时的决策,并在它们之间进行了一次小型比赛。 它做出了82个决定。

但是首先,一些公告。

比赛延长了一周


做出决定的截止日期延长至UTC 20187月27日23:59:59。 此外,宣布比赛结果的截止日期提前一周。 我们扩大了比赛范围,以提高假期期间的覆盖率。

最终测试说明


接受工作后,测试将比当前的初步测试更加彻底。

种子价值


我们正在发布一种方法,我们承诺将使用该方法来选择用于最终测试的种子值。 此方法应明确且易于验证,但不可预测。 因此,我们将从该Twitter上获取第一条推文, 该推文将在截止日期之后出现在该推文中。 很难相信我们与杰里·斯普林格(Jerry Springer)密谋,对吗? 从推文中,我们仅获取文本,而没有图片和视频。 如果推文中没有文本,而只有图片,则进行下一条推文。 转推计数。 转义帐户名未使用。

从推文中,我们得到如下的种子值:

const random_js = require('random-js'); const text = 'The tweet goes here'; const bytes = Array.from(new Buffer(text)); const random = new random_js(random_js.engines.mt19937().seedWithArray(bytes)); for (let i = 0; i<200; i++) //  ,   console.log(random.uint32()); 

从1开始(即第一,第三,第五等)进行编号时,结果序列中具有奇数的元素将用作第一轮的种子值,而偶数则用作最后一轮其他种子值。

在第一轮中,将在至少100个种子值(如果有时间的话)上的每个值上启动每个有序解决方案对。 最终将至少使用100个其他种子值。 进入决赛的决策之间在第一轮举行的会议将用于决赛(但决赛入围者与未进入决赛的决策之间将使用会议)。 因此,至少200个种子值将决定决赛的结果。

入围决赛入围


在第一轮之后,所有决定将按照得分的数量进行排序。 从名单的首位开始的许多决定都将进入决赛。

以下规则适用于决赛选手的选择。 决赛入围者的数量将决定哪个规则对决定数量最严格 (也就是说,将跳过最少 )。

  • 解决方案不超过一半。
  • 不超过50个解决方案。
  • 仅解决方案显示出比example.js更好的结果。

中间结果


对于中间测试,我们使用1到50之间的自然数作为种子值。 由不同解决方案组成的每个有序对都在这些值中的每一个上运行。 因此,对于82名参赛者,比赛包括332100场比赛; 每个解决方案都参加了8100次会议。

到目前为止,不是参与者的名字,而是解决方案的标识符。 您的标识符在您发送决定后收到的自动信件中。 禁止在对此帖子的评论中透露此类决定是您的决定。

请注意, example.js脚本的副本位于59、60和61处。 有趣的是,在82个解决方案中,有21个的结果比我们原来的示例要低。 (为什么同一个脚本的三个副本显示的结果略有不同?因为某些解决方案使用Math.random ,并且涉及它们的会话的结果不可重现。)

中间结果表可以在GitHub上看到。 图例:

  • S :得分点(这是比赛的主题)
  • 序列号 :平均会话结果
  • :达成协议的会议次数
  • A / N :达成协议的会议百分比
  • S / A :达成协议的平均会话结果
  • X :该参与者终止的会话数(由于异常或错误结果)

当然,比赛结束之前还有剩余时间,在此期间,力量的排列方式可能会发生变化。 加油!

Source: https://habr.com/ru/post/zh-CN417645/


All Articles