更新: 参与者的公告 。
更新2: 中期结果和公告 。
Hola再次宣布编程竞赛! 优胜者是预期奖品:
- 第一名:3000美元。
- 第二名:2000美元。
- 第三名:1000美元。
- 评审团可酌情授予400美元的特别奖。
- 如果您通过在CC中添加我们的地址向某人发送此竞赛的链接,并且该人获得了奖品,那么您将获得一半的奖品(当然,这不会损害获胜者的奖赏)。 对于一个获胜者,只有一个人可以收到这样的奖励-首先发送链接的人。
有趣的决定的作者将被邀请接受采访。

规则
英文竞赛条款可
在GitHub上找到 。 以下是俄语翻译。
- 使用此表单提交解决方案。 电子邮件不作任何决定。
- 直到2018年7月20日23:59:59 UTC才做出决定。
- 初步结果将于2018年7月27日发布,获奖者的最终公告- 2018年8月3日 。
- 您可以多次发送决策,但每个参与者仅考虑最近的决策,该决策在接受工作的截止日期之前发送。
- 为了进行测试,我们将使用Node.js v10.4.1 (发布时的当前版本)。 您可以在标准配置中使用解释程序支持的任何语言功能。
- 所有解决方案代码必须在单个JS文件中 。
- 解决方案应该在JS上。 如果您喜欢CoffeeScript或类似语言,则必须在提交之前使用JS翻译解决方案。
- 如果您的JS文件是通过其他语言(例如CoffeeScript)生成,缩小和/或编译的产品,请附上包含源代码的存档,并最好附上该方法的描述。 该归档文件的内容将被发布,但我们不会对其进行测试。
- 您无法加载任何模块 ,即使标准Node.js中包含的模块也是如此。
- 一位参与者只能使用一个电子邮件地址来提交决定。 禁止从不同的地址发送多个合谋决定; 参与该计划的所有决定将被取消资格。
- 我们需要知道您的全名,但是如果您愿意,我们将改为发布别名。 我们将对您的电子邮件地址保密。
- Hola的现任和前任员工及其直系亲属只能参加比赛,不得领取奖金。
- 在本出版物的评论中或通过电子邮件提出有关任务条件的问题。
贸易方式
假设我们有一本书,两个帽子和三个球。 您和另一位参与者必须决定如何在你们两个之间分享这种好处。 对您来说,这本书的价值为4美元,每个球的价值为2美元,帽子没有价值。 对于一个合伙人来说,这些相同的物品可能具有不同的价值,但是您知道,所有物品对他来说都是一样有价值的,在本例中为10美元。
您和伙伴轮流建议有关商品的部分。 反过来,你们中的一个可以接受先前的报价(除非是第一阶段的报价),或者提出还价。 谈判限于5轮,双方最多可以提出10项建议。 如果在此期间达成协议,那么你们每个人都将获得离开他的物品的总价值(每个物品都根据其自身的价值因素)。 如果没有达成协议,也就是说,上一轮的最后一句话是提出要约,而不是同意,那么没人会得到任何东西。 如果合伙人之一中断谈判,也会发生同样的事情。
这是谈判如何进行的一个示例:
- 你:我要一本书和两个球。 您将得到一个球和两个帽子。
- 伙伴:我不同意。 我想要所有的球和一顶帽子; 你会得到一本书和一顶帽子。
- 您:我不同意。 我想要一本书和一个球。 您将获得两个球和两个帽子。
- 伙伴:我同意。
您可能不知道这一点,但是对于合作伙伴而言,这些物品的价值如下:每球2美元,每顶帽子2美元,这本书没有价值。 该协议为您带来6美元,为合作伙伴带来8美元。
通常,存在两种或多种类型的对象,每种类型的对象的数量为正整数。 每个伙伴的每种对象类型的值都是一个非负整数。 尽管单个对象的值有所不同,但两个对象的所有对象的总值相同。 关于划分的建议应在伙伴之间分配所有对象,且不得追踪。 单个对象没有碎片。
您的任务是编写一个脚本,以寻求最高价值的交易(对您自己而言)。
解决方案
解决方案是没有依赖项的Node.js模块。 模块导出应该是一个类:
module.exports = class {
constructor(me, counts, values, max_rounds, log){
..
}
offer(o){
...
}
}
. :
me
— 0, , 1, .counts
— , . 2 10 .values
— , counts
, .max_rounds
— ( ).log
— , (console.log
).
offer
, .
o
— ,
counts
. , . , ,
o
undefined
.
offer
undefined
, ( ,
o
undefined
). ,
counts
, , . ,
o
,
offer
.
1 . , , , , .
, , .
example.js , . , ; , .
log
.
haggle.js -, .
--help
, . ( ,
npm install
src
.)
, . , , , , , , . . , «» «», , .
: 3 , 6 , $10, 5 . , , .
c3.large (. ) Amazon AWS Ubuntu 14.04 (amd64). .
, ; (
). , , , (
--log
).
, . -: «», .
(3 , 6 , $10, 5 ). 1 , . :
wss://hola.org/challenges/haggling/arena/standard
haggle.js
, - .
--id
: , .
.
. «» ,
.
— . , . - , .
, , -, , UNIX shell:
while true; do node haggle.js --id me@example.com:1234abcd myscript.js wss://hola.org/challenges/haggling/arena/standard; done
. !
, , . , ; , ; CoffeeScript , , . README (-). tar.gz, tar.bz2 zip. , ( JS-, ).
JS- 64 . , , - «» . 64 , , .
, , ,
.
!