Фондовый рынок все о скорости знаний. В отличие от предыдущих испытаний, текущая цена акций не случайна: она определяется теми, кто играет в игру. Если вы можете определить недооцененную акцию раньше, чем кто-либо другой, то вы написали себе программу для зарабатывания денег.
Цена относится к тому, за сколько люди торгуют акцией, а стоимость - к сумме, которую акция стоит в конце игры.
Каждый игрок начинает с 1000 каждой акции и 0 относительной чистой стоимостью. Каждая акция имеет секретное значение, и ваш счет в конце игры равен(stockValue for each ownedStock) + netWorth
. Ваш собственный капитал может быть отрицательным. В игре с N игроками есть N акций.
шаги:
Игра состоит из следующих шагов:
- Вам дана секретная стоимость одной акции.
- Вы делаете предложение продать акции X of Y за $ Z
- Все игроки получают предложения, и каждый может выбрать один из них, чтобы принять
- Все игроки проинформированы о принятых предложениях
- Вернитесь к шагу 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 обновлялись для каждого игрока в паре)
Контроллер включает в себя Autodownloader, поэтому , пожалуйста , начните представление с заголовком: 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