यह गेम थ्योरी में डॉलर बिल नीलामी गेम के लिए एक KOTH चुनौती है। इसमें एक डॉलर सबसे ज्यादा बोली लगाने वाले को बेचा जा रहा है। बोलियां 5 ids की वृद्धि में जाती हैं, और हारने वाला भी अपनी बोली लगाता है। यह विचार है कि दोनों खिलाड़ी अपने नुकसान में कटौती करने के लिए एक डॉलर के मूल्य से कहीं अधिक बोली युद्ध को आगे बढ़ाते हैं।
चलिए उम्मीद करते हैं कि आपके बॉट्स उससे ज्यादा स्मार्ट हों।
आप net.ramenchef.dollarauction.DollarBidder
कक्षा को बढ़ाकर इस खेल को खेलने के लिए एक बॉट बना रहे होंगे । आपको उस nextBid
विधि को लागू करना होगा जो आपके बॉट की अगली बोली को दूसरे बॉट की पिछली बोली को लौटाती है। यदि आवश्यक हो, तो आप newAuction
प्रतिद्वंद्वी के बॉट के वर्ग के साथ प्रत्येक नीलामी के लिए रीसेट करने के लिए विधि का उपयोग भी कर सकते हैं ।
public abstract class DollarBidder {
/**
* Used by the runner to keep track of scores.
*/
long score = 0;
/**
* (Optional) Prepare for the next auction.
*
* @param opponent The class of the opponent's bot.
*/
public void newAuction(Class<? extends DollarBidder> opponent) {}
/**
* Bid on the dollar. Bidding ends if the bid is
* not enough to top the previous bid or both bids
* exceed $100.
*
* @param opponentsBid How much money, in cents,
* that the opponent bid in the previous round. If
* this is the first round in the auction, it will
* be 0.
* @return How much money to bid in this round, in
* cents.
*/
public abstract int nextBid(int opponentsBid);
}
निम्नलिखित में से एक होने तक बोली-प्रक्रिया चलती है:
nextBid
एक अपवाद फेंकता है। यदि ऐसा होता है, तो अपवाद को फेंकने वाला बॉट अपनी पिछली बोली का भुगतान करता है, और दूसरे बॉट को मुफ्त में डॉलर मिलता है।- या तो बॉट पिछली बोली को शीर्ष करने के लिए पर्याप्त भुगतान नहीं करता है। यदि ऐसा होता है, तो दोनों बॉट अपनी बोली का भुगतान करते हैं (हारने वाला अपनी पिछली बोली का भुगतान करता है), और विजेता को एक डॉलर मिलता है।
- दोनों बॉट ने $ 100 से अधिक की बोली लगाई। यदि ऐसा होता है, तो दोनों बॉट $ 100 का भुगतान करते हैं, और न ही बॉट को डॉलर मिलता है।
बॉट्स के प्रत्येक संयोजन के लिए 2 नीलामी आयोजित की जाती हैं। उन नीलामियों में किए गए कुल लाभ से बॉट बनाए जाते हैं। सबसे ज्यादा अंक जीते।
उदाहरण
GreedyBot
import net.ramenchef.dollarauction.DollarBidder;
public class GreedyBot extends DollarBidder {
@Override
public int nextBid(int opponentsBid) {
return opponentsBid + 5;
}
}
OnlyWinningMove
import net.ramenchef.dollarauction.DollarBidder;
public class OnlyWinningMove extends DollarBidder {
@Override
public int nextBid(int opponentsBid) {
return 0;
}
}
AnalystBot
विश्लेषणात्मक-दिमाग वाले बॉट्स के लिए टेम्पलेट के रूप में इसका उपयोग न करें; ImprovedAnalystBot
इसके बजाय का उपयोग करें ।
import net.ramenchef.dollarauction.DollarBidder;
// yes, this is a poor implementation, but I'm not
// going to waste my time perfecting it
public class AnalystBot extends DollarBidder {
private DollarBidder enemy;
@Override
public void newAuction(Class<? extends DollarBidder> opponent) {
try {
enemy = opponent.newInstance();
enemy.newAuction(this.getClass());
} catch (ReflectiveOperationException e) {
enemy = null;
}
}
@Override
public int nextBid(int opponentsBid) {
if (enemy == null)
return 0;
return enemy.nextBid(95) >= 100 ? 0 : 95;
}
}
AnalystKiller
import net.ramenchef.dollarauction.DollarBidder;
public class AnalystKiller extends DollarBidder {
private static int instances = 0;
private final boolean tainted;
public AnalystKiller() {
this.tainted = instances++ != 0;
}
@Override
public int nextBid(int opponentsBid) {
if (tainted)
throw new RuntimeException("A mysterious error occurred! >:)");
return 0;
}
}
अतिरिक्त नियम
- मानक खामियों को मना किया जाता है।
- अन्य बॉट को बदलने की अनुमति है, लेकिन फ़ील्ड / विधि दृश्यता में परिवर्तन करने का प्रयास रहस्यमय
SecurityException
एस में परिणाम देगा । एक अपवाद 500 बॉट सीमा को तोड़ने के लिए एक और बॉट पैदा कर रहा है। DollarBidder
क्लास चलाने के लिए बॉट्स रनर पैकेज तक नहीं पहुँच सकते ।- सभी तरीकों को 500ms या उससे कम में लौटना चाहिए।
- बॉट्स को नियतात्मक होने की आवश्यकता नहीं है।
- आपकी बोली को 5 to से अधिक होने की आवश्यकता नहीं है।
- $ 1 = 100 ¢
- परिणाम 24 अप्रैल, 2018 को पोस्ट किए जाएंगे।
परिणाम
MTargetedBot: $14.30
BuzzardBot: $9.83
BluffBot: $9.40
RiskRewardBot: $9.35
SecretBot: $8.50
LuckyDiceBot: $7.28
CounterBot: $6.05
MBot: $5.40
StackTraceObfuscaterBot: $5.20
EvilBot: $4.80
MarginalBot: $4.60
TargetValueBot: $4.59
InflationBot: $4.27
UpTo200: $4.20
InsiderTradingBot: $1.90
MimicBot: $1.50
BorkBorkBot: $1.22
DeterrentBot: $0.95
MarginalerBot: $0.00
RandBot: $-4.45
BreakEvenAsap: $-7.00
AnalystOptimizer: $-13.95
DeterredBot: $-1997.06
ScoreOverflowBot: $-21474844.15
MirrorBot: $-21475836.25
MTargetedBot
$ 14.30 के लाभ के साथ बधाई !
LuckyDiceBot
उदाहरण के लिए 2-12
बेतरतीब ढंग से वेतन वृद्धि में बोलियाँ ..