UWAGA: To wyzwanie jest teraz zamknięte: Nie będę już aktualizować tabeli wyników i nie zmieni przyjętej odpowiedzi. Możesz jednak samodzielnie uruchomić kontroler i zaktualizować tabelę wyników, jeśli chcesz.
Dołącz do czatu!
Wprowadzenie
Dobry wieczór, handlowcy! Wszyscy jesteście handlowcami firmy golfowej PPCG. Twoim zadaniem jest zarobienie jak największej ilości pieniędzy.
Wyzwanie
Napisz program, który kupuje i sprzedaje akcje na Giełdzie Papierów Wartościowych Stack w celu zarobienia jak największej ilości pieniędzy.
Rozgrywka
Wszyscy gracze zaczną od 5 akcji i 100 $ w swoim banku. Gra zaczyna się zawsze od ceny akcji wynoszącej 10 USD.
Każda gra będzie miała 1000 rund, w których pierwsza runda 1
. W każdej rundzie do twojego programu będą dostarczane cztery argumenty jako dane wejściowe: bieżąca cena akcji, liczba posiadanych akcji, ilość posiadanych pieniędzy i liczba rund (1-indeksowana).
Na przykład, jeśli mój program to test1.py
cena akcji 100
, liczba posiadanych przeze mnie akcji 3
, ilość posiadanych przeze mnie pieniędzy 1200
, a zaokrąglona liczba to 576
, że mój program będzie działał w następujący sposób:
python test1.py 100 3 1200 576
W rundzie cena akcji podana każdemu graczowi będzie taka sama. Nie zmienia się to do końca rundy.
W odpowiedzi gracz musi wydrukować swoje polecenie. Istnieją dwie opcje:
- Kup akcje: To polecenie podaje,
bn
gdzien
jest liczba akcji, które chcesz kupić. Na przykład, jeśli chcesz kupić 100 udziałów, wypisz:
b100
Kupując akcje, możesz otrzymać kredyt w rachunku bieżącym w wysokości do 1000 USD. Jeśli spróbujesz kupić wystarczającą liczbę akcji, która przekroczy ten limit (saldo bankowe spadnie poniżej -1000 USD), zostaniesz ogłoszony bankrutem. Oznacza to, że stracisz wszystkie swoje akcje, a saldo zostanie ustawione na 50 USD.
Na twoje bankructwo nie wpłynie cena akcji.
(Jeśli saldo wynosi -1000 USD, nie jesteś bankrutem. Jeśli jednak saldo wynosi -1001 USD, jesteś bankrutem)
- Sprzedaj akcje: To polecenie jest podawane jako
sn
gdzien
jest liczba akcji, które chcesz sprzedać. Na przykład, jeśli chcesz sprzedać 100 udziałów, wygenerujesz:
s100
Nie możesz sprzedawać więcej akcji niż posiadasz. Jeśli spróbujesz to zrobić, twoja prośba zostanie odrzucona i pominiesz rundę.
Jeśli chcesz, aby przejść rundę i nic nie robić, albo wyjście b0
lub s0
.
Twoje żądanie zostanie odrzucone, jeśli spróbujesz kupić lub sprzedać ujemną liczbę akcji i / lub liczbę niecałkowitą.
Po 5 rundach na koniec każdej rundy wszyscy gracze otrzymają dywidendę, której wartość wynosi 5% średniej średniej ceny akcji z ostatnich 5 rund.
Jak to działa?
Początkowo cena akcji wyniesie 10 USD. Pod koniec każdej rundy zostanie ona ponownie obliczona przy użyciu wzoru:
Cena akcji będzie ograniczona, aby nigdy nie spadła poniżej 1 USD.
Aby zapobiec zbyt szybkim zmianom, zmiana ceny akcji jest ograniczona do maksymalnie .
Zasady
- Twój program musi mieć nazwę
- Twój program może przechowywać jeden plik tekstowy. Musi być przechowywany w tym samym folderze co twój program
- Podaj w odpowiedzi szczegółowe informacje na temat uruchamiania programu
- Ten KotH jest otwarty dla wszystkich języków programowania, które są bezpłatne i mogą być uruchamiane w systemie Windows 10
- Twój wynik opiera się wyłącznie na zawartości twojego salda. Wszelkie pieniądze zamknięte w akcjach nie będą liczone
- Możesz edytować swój program w dowolnym momencie. Przed każdą grą najnowszy kod zostanie zapisany i skompilowany
- Nie powinieneś pisać kodu, który jest specjalnie ukierunkowany na innego bota.
Kontroler
Kontroler jest napisany w języku Python i można go znaleźć tutaj: https://gist.github.com/beta-decay/a6abe40fc9f4ff6cac443395377ec31f
Na koniec wydrukuje tabelę wyników i wyświetli wykres zmian ceny akcji w trakcie gry.
Na przykład, gdy grały dwa losowe boty
Zwycięski
Gracz z największą ilością pieniędzy na swoim koncie pod koniec ostatniej gry wygrywa.
Tabela liderów
Gra 4: 16:14 10/08/2018
Name Balance
Experienced Greedy Idiot $14802860126910608746226775271608441476740220190868405578697473058787503167301288688412912141064764060957801420415934984247914753474481204843420999117641289792179203440895025689047561483400211597324662824868794009792985857917296068788434607950379253177065699908166901854516163240207641611196996217004494096517064741782361827125867827455285639964058498121173062045074772914323311612234964464095317202678432969866099864014974786854889944224928268964434751475446606732939913688961295787813863551384458839364617299883106342420461998689419913505735314365685264187374513996061826694192786379011458348988554845036604940421113739997490412464158065355335378462589602228039730
Equalizer $763185511031294813246284506179317396432985772155750823910419030867990447973211564091988995290789610193513321528772412563772470011147066425321453744308521967943712734185479563642323459564466177543928912648398244481744861744565800383179966018254551412512770699653538211331184147038781605464336206279313836606330
Percentage Trader $448397954167281544772103458977846133762031629256561243713673243996259286459758487106045850187688160858986472490834559645508673466589151486119551222357206708156491069820990603783876340193236064700332082781080188011584263709364962735827741094223755467455209136453381715027369221484319039100339776026752813930
OYAIB $8935960891618546760585096898089377896156886097652629690033599419878768424984255852521421137695754769495085398921618469764914237729576710889307470954692315601571866328742408488796145771039574397444873926883379666840494456194839899502761180282430561362538663182006432392949099112239702124912922930
Chimps on a Typewriter $176504338999287847159247017725770908273849738720252130115528568718490320252556133502528055177870
Greedy B*****d $17689013777381240
Illiterate Dividend Investor $2367418699671980
Lucky Number 6 $4382725536910
Lone Accountant $90954970320
Buy/Reinvest $127330
Technical Analysis Robot $126930
Dollar Cost Averager $106130
Fibonacci $69930
Novice Broker $28130
Buy Low $6130
Naive Statistician $6130
Fallacious Gambler $6130
Passive Trader $4980
Half More or Nothing $4920
Monkeys on a Typewriter $66
Zobacz wykresy każdego zawodnika
Powiązane, ale rozgrywka i kryterium wygranej różnią się bardzo od tego wyzwania.