股市全与知识的速度有关。与以前的挑战不同,当前的股价不是随机的:它是由玩游戏的人确定的。 如果您能在其他任何人之前发现低价股票,那么您已经为自己编写了赚钱程序。
价格是指人们交易股票的数量,价值是指游戏结束时股票的价值。
每个玩家以每只股票1000头开始,相对净资产为0。 每只股票都有一个秘密价值,您在游戏结束时的得分是(stockValue for each ownedStock) + netWorth
。您的净资产可能为负。在N玩家游戏中,有N只股票。
脚步:
游戏遵循以下步骤:
- 您将获得单只股票的秘密价值。
- 您提出要价以$ Z卖出X股Y股票
- 所有玩家都获得了优惠,每个人都可以选择一个接受
- 通知所有玩家已接受的报价
- 返回步骤2
每个步骤的详细信息如下:
void secretValue(int stockType, int value)
:- 您学到的价值不会透露给其他任何玩家。
- 值介于
0
和之间1000
- 低值比高值更容易发生(平方均匀分布)
Offer makeOffer(List<Stock> currentStock)
- 您可以返回
null
不提供任何报价。
- 您可以返回
Offer acceptOffer(List<Offer> offers)
- 您可以返回
null
接受任何一个 - 如果没有可用的报价,则不会调用此报价
- 如果您接受,则您的资产净值下降$ Z(可能变为负数)并获得X的Y股票。与卖方相反。
- 如果您接受报价,则交换将立即发生,并且报价将被删除,因此其他玩家将无法接受。
- 您可以返回
void acceptedOffers(List<Offer> offers)
- 包括您接受的优惠
不允许使用静态变量或写入文件。(游戏之间不存在持久数据)允许非严重竞争者。
接口:
public final class Stock {
public Stock(int stockType, int amount);
public int getType();
public int getAmount();
public Stock minus(Stock other);
public Stock plus(Stock other);
public Stock minus(int amount);
public Stock plus(int amount);
public Stock setAmount(int amount);
}
public class Offer {
public Offer(Stock offer, int payment);
public Stock getOffer();
public int getPayment();
}
非Java提交:
- 所有呼叫包括两行:第一行是被调用的函数:
SecretValue
,MakeOffer
,AcceptOffer
,AcceptedOffers
,SetRandom
,和包含实际数据的第二行。 - 股票使用
:
定界符格式化:stockType:stockAmount
。 - 优惠使用
@
定界符格式化:offer@price
- 列表使用
;
定界符格式化 SecretValue
用:
定界符格式化:stockType:value
RandomSeed
用于使您的提交具有确定性。如果您的提交使用随机性,请使用传递的整数作为种子!- 所有函数调用都需要响应。如果响应是
null
或void
,则返回一个空字符串。 - 请包括一个
command.txt
提供命令行参数以运行您的提交的文件
计分
由1000回合组成的游戏将运行多次。将根据ELO系统为玩家评分,并与具有类似技能水平的玩家配对。最终ELO得分最高的玩家获胜!(我已经修改了系统,以便为每个配对的玩家更新每个游戏的ELO分数)
该控制器包括一个自动下载器,因此请使用标题来开始提交Name, Language
。如果您提交的内容不是使用Java,则每个代码块都应以文件名开头。(不包括命令文件,该文件应该是您帖子中的第一块)
跑步
有两种方法可以运行此项目:
下载源代码,编译并运行。您可以在Github上找到源。跑
git clone --recursive https://github.com/nathanmerrill/StockExchange.git
下载JAR可执行文件。提交的内容应放在您当前工作目录的
/submissions
文件夹中。您可以只下载JAR,只提交或两者都下载。
传递run
以运行项目(默认选项),或传递download
以下载到目前为止尚未解决此问题的所有提交。
计分板
1. 1308.1220497323848 Cheater
2. 1242.0333695640356 InsideTrader
3. 1158.3662658295411 UncleScrooge
4. 1113.8344000358493 BlackMarket
5. 1051.8370015258993 DartMonkey
6. 983.0545446731494 WarGamer
7. 939.457423938002 Spammer
8. 901.4372529538886 DumbBot
9. 859.0519326039137 ShutUpAndTakeMyMoney
10. 852.9448222849587 VincentKasuga
11. 718.2112067329083 Profiteer