Bu oyun teorisindeki dolarlık açık artırma oyunu için KOTH mücadelesi . İçinde en yüksek teklifi verene bir dolar satılmaktadır. Teklifler 5 ¢ artışlarla artar ve kaybeden de teklifini öder. Buradaki fikir, her iki oyuncunun da kayıplarını azaltmak için ihale savaşını bir doların değerinin çok ötesine yükseltmesi.
Umarım botların bundan daha akıllıdır.
net.ramenchef.dollarauction.DollarBidder
Sınıfı genişleterek bu oyunu oynamak için bir bot oluşturacaksınız . nextBid
Diğer botun önceki teklifine göre botunuzun bir sonraki teklifini döndüren yöntemi uygulamalısınız . Gerekirse, newAuction
rakibin botunun sınıfı ile her açık artırma için sıfırlama yöntemini de kullanabilirsiniz .
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);
}
Teklif verme, aşağıdakilerden biri gerçekleşinceye kadar devam eder:
nextBid
bir istisna atar. Bu durumda, istisnayı atan bot önceki teklifini öder ve diğer bot bedavaya dolar kazanır.- Her iki bot da bir önceki teklife yetecek kadar ödeme yapmıyor. Bu olursa, iki bot da tekliflerini verir (kaybeden önceki teklifini öder) ve kazanan bir dolar alır.
- Her iki bot da 100 $ 'ın üzerinde teklif veriyor. Bu olursa, her iki bot da 100 dolar ödüyor ve hiçbir bot da dolar kazanmıyor.
Her bot kombinasyonu için 2 açık artırma düzenlenmiştir. Botlar, bu açık artırmalardan elde ettikleri toplam kar ile puanlanır. En yüksek puan kazanır.
Örnekler
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
Bunu analitik fikirli botlar için şablon olarak kullanmayın; kullanmak ImprovedAnalystBot
yerine.
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;
}
}
Ek Kurallar
- Standart boşluklar yasaktır.
- Diğer botların sabote edilmesine izin verilir, ancak alan / yöntem görünürlüğünü değiştirmeye çalışmak gizemli sonuçlara neden olur
SecurityException
. Bir istisna, başka bir botun 500ms sınırını aşmasına neden oluyor. - Botlar,
DollarBidder
sınıfı genişletmek dışında koşucu paketine erişemez . - Tüm yöntemler 500 ms veya daha kısa sürede geri dönmelidir.
- Botların deterministik olmaları gerekmez.
- Teklifiniz yok değil ¢ 5 katı olması gerekir.
- $ 1 = 100 ¢
- Sonuçlar 24 Nisan 2018’de yayınlanacaktır.
Sonuçlar
Bireysel turları burada görüntüleyin.
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 dolar karla tebrik ederiz !
LuckyDiceBot
artışlarla örnek teklifler için 2-12
rastgele ..