株式市場はすべて知識のスピードにかかっています。以前の課題とは異なり、現在の株価はランダムではありません。ゲームをプレイする人によって決定されます。 低価格の株を他の誰よりも早く特定できるなら、あなたは自分でお金を稼ぐプログラムを書いた。
価格は人々が株を取引している量を指し、値はゲームの終了時に株が価値がある量を指します。
各プレイヤーは、各株の1000、および0の相対的な自己資本で始まります。 各株式には秘密の価値があり、ゲーム終了時のスコアは(stockValue for each ownedStock) + netWorth
です。純資産はマイナスになる可能性があります。Nプレーヤーゲームでは、N株があります。
手順:
ゲームは次の手順に従います。
- 単一の株式の秘密の価値が与えられます。
- XのY株を$ Zで販売することを申し出ます
- すべてのプレーヤーにオファーが与えられ、それぞれが受け入れるものを選択できます
- すべてのプレーヤーは、受け入れられたオファーについて通知されます
- 手順2に戻る
各ステップの詳細を以下に示します。
void secretValue(int stockType, int value)
:- あなたが学ぶ価値は、他のプレイヤーには明らかにされません。
- 値が間にある
0
と1000
- 低い値は高い値よりも発生しやすい(2乗均一分布)
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の提出:
- すべてのコールが2つの行で構成:最初の行は、呼び出される関数である:
SecretValue
、MakeOffer
、AcceptOffer
、AcceptedOffers
、SetRandom
、および実際のデータを含む第二行。 - 株式は
:
区切り記号でフォーマットされます:stockType:stockAmount
。 - オファーは
@
区切り文字でフォーマットされます:offer@price
- リストは
;
区切り文字でフォーマットされています SecretValue
:
区切り文字でフォーマットされます:stockType:value
RandomSeed
提出物を決定論的にするために使用されます。提出がランダム性を使用する場合、シードとして渡された整数値を使用してください!- すべての関数呼び出しには応答が必要です。応答がある場合
null
やvoid
、空の文字列を返します。 command.txt
サブミットを実行するためのコマンドライン引数を与えるを含めてください
得点
1000ターンで構成されるゲームは複数回実行されます。プレイヤーはELOシステムに従ってスコアリングされ、同様のスキルレベルのプレイヤーとペアになります。最終的なELOスコアが最も高いプレイヤーが勝ちます!(各ゲーム、ELOスコアがプレーヤーのペアリングごとに更新されるようにシステムを変更しました)
コントローラーには自動ダウンローダーが含まれているため、ヘッダーから送信を開始してください:Name, Language
。提出物がJavaでない場合、各コードブロックはファイルの名前で始まる必要があります。(投稿の最初のブロックであるコマンドファイルを除く)
ランニング
このプロジェクトを実行するには2つの方法があります。
ソースコードをダウンロードし、コンパイルして実行します。ソースは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