Pasar saham adalah semua tentang kecepatan pengetahuan. Tidak seperti tantangan sebelumnya, harga saham saat ini tidak acak: itu ditentukan oleh mereka yang bermain. Jika Anda dapat mengidentifikasi stok di bawah harga sebelum orang lain, maka Anda telah menulis sendiri program penghasil uang.
Harga mengacu pada berapa banyak orang memperdagangkan saham, sedangkan Nilai mengacu pada jumlah nilai saham pada akhir permainan.
Setiap pemain mulai dengan 1000 masing-masing stok, dan 0 kekayaan bersih relatif. Setiap stok memiliki nilai rahasia, dan skor Anda di akhir permainan adalah(stockValue for each ownedStock) + netWorth
. Kekayaan bersih Anda bisa negatif. Dalam gim N-pemain, ada stok N.
Tangga:
Gim ini mengikuti langkah-langkah berikut:
- Anda diberi nilai rahasia satu saham.
- Anda membuat penawaran untuk menjual saham X of Y seharga $ Z
- Semua pemain diberi penawaran, dan masing-masing dapat memilih satu untuk menerima
- Semua pemain diberitahu tentang penawaran yang diterima
- Kembali ke langkah 2
Masing-masing langkah diberikan secara rinci di bawah ini:
void secretValue(int stockType, int value)
:- Nilai yang Anda pelajari tidak diungkapkan kepada pemain lain.
- Nilainya antara
0
dan1000
- Nilai rendah lebih suka terjadi daripada nilai tinggi (distribusi seragam kuadrat)
Offer makeOffer(List<Stock> currentStock)
- Anda dapat kembali
null
untuk tidak melakukan penawaran.
- Anda dapat kembali
Offer acceptOffer(List<Offer> offers)
- Anda dapat kembali
null
untuk tidak menerima satupun - Jika tidak ada penawaran yang tersedia, ini tidak akan dipanggil
- Jika Anda menerima, kekayaan bersih Anda turun $ Z (bisa menjadi negatif) dan menerima X saham Y. Sebaliknya terjadi pada penjual.
- Jika Anda menerima tawaran, pertukaran akan segera terjadi, dan tawaran itu akan dihapus sehingga pemain tambahan tidak dapat menerimanya.
- Anda dapat kembali
void acceptedOffers(List<Offer> offers)
- Termasuk penawaran yang Anda terima juga
Variabel statis atau penulisan ke file tidak diizinkan. (Tidak ada data persisten dari game ke game) Peserta yang tidak serius diizinkan.
Antarmuka:
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();
}
Pengiriman non-Jawa:
- Semua panggilan terdiri dari dua baris: Baris pertama adalah fungsi yang dipanggil:
SecretValue
,MakeOffer
,AcceptOffer
,AcceptedOffers
,SetRandom
, dan baris kedua berisi data aktual. - Saham diformat dengan
:
pembatas:stockType:stockAmount
. - Penawaran diformat dengan
@
pembatas:offer@price
- Daftar diformat dengan
;
pembatas SecretValue
diformat dengan:
pembatas:stockType:value
RandomSeed
digunakan untuk membuat kiriman Anda menjadi deterministik. Jika kiriman Anda menggunakan keacakan, silakan gunakan nilai integer yang diteruskan sebagai seed!- Semua panggilan fungsi perlu ditanggapi. Jika responsnya adalah
null
atauvoid
, kembalikan string kosong. - Harap sertakan
command.txt
argumen baris perintah yang diberikan untuk menjalankan kiriman Anda
Mencetak gol
Game yang terdiri dari 1000 putaran akan dijalankan beberapa kali. Pemain akan diberi skor sesuai dengan sistem ELO , dan dipasangkan dengan pemain dengan tingkat keterampilan yang sama. Pemain dengan skor ELO akhir tertinggi menang! (Saya telah memodifikasi sistem sehingga setiap pertandingan, skor ELO diperbarui untuk setiap pasangan pemain)
Controller mencakup AutoDownloader, jadi silakan mulai kiriman Anda dengan sebuah sundulan: Name, Language
. Jika kiriman Anda tidak di Jawa, setiap blok kode harus dimulai dengan nama file. (tidak termasuk file perintah, yang seharusnya menjadi blok pertama di posting Anda)
Lari
Ada 2 cara untuk menjalankan proyek ini:
Unduh kode sumber, kompilasi dan jalankan. Anda dapat menemukan sumbernya di Github . Menjalankan
git clone --recursive https://github.com/nathanmerrill/StockExchange.git
Unduh eksekusi JAR. Pengajuan harus ditempatkan di direktori kerja Anda saat ini di
/submissions
folder. Anda dapat mengunduh hanya JAR , hanya pengiriman , atau keduanya
Lewati run
untuk menjalankan proyek (opsi default), atau lewati download
untuk mengunduh semua kiriman sejauh ini dari pertanyaan ini.
Papan angka
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