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
sumber
Jawaban:
Penipu, Jawa
Berusaha tidak menjual apa pun demi uang.
sumber
WarGamer, Jawa
Setelah pemeriksaan asal-asalan aturan saya telah memutuskan bahwa langkah kemenangan utama adalah tidak bermain. Siapa pun yang menawarkan untuk menjual saham kemungkinan tahu harga dan akan mendapat untung dari penjualan. Ini dapat diaktifkan sehingga akan membuat "lelucon" penawaran untuk menjual saham untuk Integer.MAX_VALUE dolar berharap tutup mulut dan mengambil uang saya akan menggigit.
sumber
ShutUpAndTakeMyMoney, Java
Ia menerima tawaran apa pun.
sumber
DumbBot, Java
Gunakan bot ini saat membuat bot Anda sendiri. Menawarkan saham rahasianya dengan harga diskon.
sumber
python_starter, Python 3
Gunakan ini sebagai titik awal untuk program python (atau bahasa lain) apa pun
Menerima tawaran acak.
File perintah:
Program:
sumber
Vincent Kasuga, Jawa
Tidak yakin apakah Java saya valid. Silakan tinjau.
Bagaimana itu bekerja
- jika Anda memiliki semua stok, Anda dapat mengatur harga stok. Anda adalah satu-satunya penjual. 1. Beli semua persediaan. 2. Tetapkan harga semua saham menjadi super tinggi pada tick terakhir. 3. KEUNTUNGAN! - Ini biasanya tidak mungkin karena ...Cara kerjanya, v2
Bot tidak memprediksi - ia mengeksploitasi cacat bawaan dalam struktur pasar!Melakukan
Faq
T: Siapa Vincent Kasuga?
A: Dia membeli semua bawang dan berjangka bawang di Amerika Serikat. (menempatkan mereka semua di gudang rahasia) Mengadakan industri tebusan - beri saya X juta atau saya akan menetapkan harga rendah dan Anda semua akan bangkrut.
Tapi dia tidak berhenti di situ.
Kemudian, dia diam-diam menyingkat bawang ETF (bertaruh bahwa itu akan turun). Dia menjual semua bawang pada satu waktu, secara fisik mengirimkannya dalam ribuan truk ke bursa. Tas bawang lebih murah dari bawang. Dia menghasilkan jutaan LAGI. Singkatnya, sungai Hudson dipenuhi bawang.
Dia orang yang nyata.
Kode
"Saya sudah memojokkan Pasar Emas, Tuan Bond!"
sumber
for (offer: offers)
->for (Offer offer: offers)
corneredStockType == null
juga tidak valid. sebuahint
tidak bisanull
.Spammer, Java
Spam pasar dengan stok benar-benar murah, dan hanya membeli saham ketika harganya kurang dari 20. Ketika jumlah stok jatuh ke 1, itu akan mencoba membeli apa pun.
sumber
DartMonkey, Java
(non-bersaing: Tidak akan menang dan saya sudah punya jawaban lain)
Monyet Dart suka melempar barang-barang ... dan ada tumpukan besar tongkat runcing di sebelahnya. Dia melihat beberapa kertas di dinding. Bam! Bam! Bam! Dalam waktu singkat, Dart Monkey melempar 80 anak panah! Setengah anak panah berwarna merah, dan setengah lainnya berwarna biru, dan ada angka acak di sana! Monyet dart melihat komputer ... jenis monyet dart dalam angka. Monyet Dart suka angka. Monyet dart menghasilkan uang dari anak panahnya ...
Dalam keseriusan semua, DartMonkey menginisialisasi array integer yang memiliki panjang dua kali jumlah saham. Dia menyimpan satu nomor untuk jumlah stok yang ingin dia beli / jual, dan satu nomor untuk harga saham. Dia kemudian berganti-ganti menjual saham dari array, dan menerima penawaran sesuai dengan array. Jika dia tidak memiliki stok dari array, dia tidak akan menawarkan apa pun, dan jika dia tidak memiliki penawaran yang diberikan kepadanya dari array, dia tidak akan menerima apa pun.
Jawaban ini terinspirasi oleh @TheNumberOne, yang menyebutkan monyet panah dalam obrolan
sumber
InsideTrader, Java
InsideTrader hanya melihat sekeliling dan melihat bahwa semua orang berusaha untuk menjadi kreatif. Tapi dia melakukan sesuatu yang kreatif: melakukan apa yang diharapkan.
Bot ini dibeli ketika "layak" karena "meminjam" beberapa "dokumen internal" untuk "membimbing" "keputusan investasi".
Agenda dan cara kerjanya dalam kode. ;)
Kode"
sumber
Error on line 50: modifier private not allowed here Error on line 54: modifier private not allowed here
. Saya baru saja menghapus kelas, dan memperpanjangnyaPlayer
WallStreet, Kotlin
Mulai dengan menjual tinggi dan membeli rendah dan secara bertahap bergeser ke apa yang menurutnya harga sebenarnya. Anda juga dapat menggunakan ini sebagai templat untuk membuatnya di kotlin.
Catatan: Ada bug di sini yang sepertinya tidak bisa saya reproduksi dengan benar. Jika program saya mogok atau mengalami masalah, harap ping saya dalam obrolan dan tautkan pastebin dari konten
submissions/other/WallStreet/log.txt
sumber
command.txt
tidak perlu nama file. Pos yang bagus!$
hanya berfungsi dengan nama variabel.${}
mengeksekusi kode arbitrer. Pada dasarnya, ini bekerja dengan baik dan saya lebih suka tanpa kawat gigi.command.txt
:kotlinc
->kotlinc.bat
dankotlin
->kotlin.bat
UncleScrooge, Java
Jual stok dengan harga sangat tinggi, dan hanya beli jika harganya kurang dari 100.
sumber
Pencatut, Jawa
Untung ada di dalamnya untuk uang, dan dia selalu menghitung koin. Dia membuat perkiraan konservatif tentang berapa banyak uang yang dia dapatkan. Dia kemudian akan membeli saham rahasia, jika nilainya di bawah nilainya, atau membeli saham murah. Dia juga ingat berapa banyak yang dia bayar untuk semuanya, dan selalu membuat penawaran di atas harga saham. Selain itu, dia akan membuat penawaran lebih tinggi jika dia memiliki uang lebih sedikit.
Catatan: Saya pikir saya sudah melakukan ini dengan benar, tetapi jika @NathanMerrill tidak keberatan membaca kode saya untuk bug, itu akan menjadi luar biasa
sumber
MaxBot, Java
Bot ini mencoba menghasilkan keuntungan maksimal dari setiap transaksi Saat menjual, masukkan harga saham yang tidak dikenal pada $ 300, saat membeli $ 250.
sumber
BlackMarket, Jawa
Tidak banyak bicara tentang ini, mengingat transaksi ini akan ... dari grafik, Anda mungkin mengatakan.
sumber
NotQuiteABanksBestFriend, Python 3
Command.txt:
Selalu mencoba untuk menjual saham tersembunyi lebih dari nilainya.
sumber