शेयर बाजार ज्ञान की गति के बारे में है। पिछली चुनौतियों के विपरीत, वर्तमान स्टॉक मूल्य यादृच्छिक नहीं है: यह गेम खेलने वालों द्वारा निर्धारित किया जाता है। यदि आप किसी और से पहले एक कम कीमत वाले स्टॉक की पहचान कर सकते हैं, तो आपने खुद को एक पैसा बनाने वाला कार्यक्रम लिखा है।
मूल्य से तात्पर्य है कि लोग शेयर का कितना व्यापार कर रहे हैं, जबकि मूल्य उस राशि को दर्शाता है जो खेल के अंत में स्टॉक के लायक है।
प्रत्येक खिलाड़ी प्रत्येक स्टॉक के 1000, और 0 के सापेक्ष शुद्ध मूल्य के साथ शुरू होता है। प्रत्येक स्टॉक का एक गुप्त मूल्य है, और खेल के अंत में आपका स्कोर है(stockValue for each ownedStock) + netWorth । आपकी नेटवर्थ नकारात्मक हो सकती है। एन-प्लेयर गेम में, एन स्टॉक होते हैं।
कदम:
खेल निम्नलिखित चरणों का पालन करता है:
- आपको किसी एक शेयर का गुप्त मूल्य दिया जाता है।
- आप $ Z के लिए X का Y स्टॉक बेचने का प्रस्ताव रखते हैं
- सभी खिलाड़ियों को ऑफ़र दिए जाते हैं, और प्रत्येक स्वीकार करने के लिए एक का चयन कर सकता है
- सभी खिलाड़ियों को स्वीकार किए जाते हैं
- चरण 2 पर वापस जाएं
प्रत्येक चरण नीचे विस्तार से दिए गए हैं:
void secretValue(int stockType, int value):- आपके द्वारा सीखा गया मूल्य किसी अन्य खिलाड़ी के लिए प्रकट नहीं होता है।
- मान
0और के बीच है1000 - उच्च मूल्यों की तुलना में कम मान होना अधिक पसंद है (समान वितरण वितरण)
Offer makeOffer(List<Stock> currentStock)- आप
nullकोई प्रस्ताव नहीं करने के लिए वापस आ सकते हैं।
- आप
Offer acceptOffer(List<Offer> offers)- आप
nullउनमें से कोई भी स्वीकार करने के लिए वापस आ सकते हैं - यदि कोई उपलब्ध ऑफ़र नहीं हैं, तो इसे कॉल नहीं किया जाएगा
- यदि आप स्वीकार करते हैं, तो आपका शुद्ध मूल्य $ Z से कम हो सकता है (नकारात्मक जा सकता है) और Y स्टॉक का X प्राप्त करता है। विक्रेता के साथ विपरीत होता है।
- यदि आप किसी प्रस्ताव को स्वीकार करते हैं, तो एक्सचेंज तुरंत हो जाएगा, और प्रस्ताव को हटा दिया जाएगा ताकि अतिरिक्त खिलाड़ी इसे स्वीकार न कर सकें।
- आप
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();
}
गैर-जावा प्रस्तुतियाँ:
- सभी कॉल दो पंक्तियों से मिलकर बनता है: पहली पंक्ति समारोह बुलाया जा रहा है:
SecretValue,MakeOffer,AcceptOffer,AcceptedOffers,SetRandom, और दूसरा वास्तविक डेटा युक्त लाइन। - स्टॉक को एक
:सीमांकक के साथ स्वरूपित किया जाता हैstockType:stockAmount:। - ऑफ़र एक
@सीमांकक के साथ स्वरूपित होते हैं:offer@price - सूची को एक
;सीमांकक के साथ स्वरूपित किया जाता है SecretValueएक:सीमांकक के साथ स्वरूपित किया गया है:stockType:valueRandomSeedअपने सबमिशन निर्धारक बनाने के लिए उपयोग किया जाता है। यदि आपका सबमिशन यादृच्छिकता का उपयोग करता है, तो कृपया बीज के रूप में पास किए गए पूर्णांक मान का उपयोग करें!- सभी फ़ंक्शन कॉल को एक प्रतिक्रिया की आवश्यकता होती है। यदि प्रतिक्रिया है
nullयाvoid, एक खाली स्ट्रिंग लौटें। - कृपया
command.txtअपनी प्रविष्टि को चलाने के लिए एक कमांड लाइन तर्क दें जो इसमें शामिल है
स्कोरिंग
1000 मोड़ से युक्त खेल कई बार चलाए जाएंगे। खिलाड़ियों को ELO प्रणाली के अनुसार बनाया जाएगा , और समान कौशल स्तरों वाले खिलाड़ियों के साथ जोड़ा जाएगा। उच्चतम अंतिम ईएलओ स्कोर जीत वाला खिलाड़ी! (मैंने सिस्टम को संशोधित किया है ताकि प्रत्येक गेम, ईएलओ स्कोर प्रत्येक खिलाड़ी की जोड़ी के लिए अपडेट हो)
नियंत्रक में एक ऑटोडॉकर शामिल है, इसलिए कृपया अपना शीर्षक हेडर के साथ शुरू करें Name, Language:। यदि आपका सबमिशन जावा में नहीं है, तो प्रत्येक कोड ब्लॉक फाइल के नाम से शुरू होना चाहिए। (कमांड फाइल को छोड़कर, जो आपकी पोस्ट का पहला ब्लॉक होना चाहिए)
चल रहा है
इस परियोजना को चलाने के 2 तरीके हैं:
स्रोत कोड डाउनलोड करें, संकलित करें और चलाएं। आप जीथब पर स्रोत पा सकते हैं । रन
git clone --recursive https://github.com/nathanmerrill/StockExchange.gitJAR निष्पादन योग्य डाउनलोड करें। प्रस्तुतियाँ
/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