นี่คือความท้าทาย KOTH สำหรับเกมประมูลธนบัตรในทฤษฎีเกม ในนั้นดอลลาร์จะถูกขายให้กับผู้ประมูลสูงสุด การเสนอราคาเพิ่มขึ้น 5 ทีและผู้แพ้ก็จ่ายค่าประมูล แนวคิดก็คือผู้เล่นทั้งสองจะขยายสงครามการประมูลออกไปไกลเกินกว่าค่าเงินดอลลาร์เพื่อลดความสูญเสีย
หวังว่าบอทของคุณจะฉลาดกว่านั้น
คุณจะสร้างบอทเพื่อเล่นเกมนี้โดยขยายnet.ramenchef.dollarauction.DollarBidder
ชั้นเรียน คุณต้องใช้nextBid
วิธีการที่จะคืนค่าการประมูลครั้งถัดไปของ bot ของคุณเนื่องจากการเสนอราคาก่อนหน้าของ bot อื่น หากจำเป็นคุณสามารถใช้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
s ข้อยกเว้นทำให้บอตอื่นทำลายขีด จำกัด 500ms - บอตไม่สามารถเข้าถึงแพ็คเกจนักวิ่งได้ยกเว้นว่าจะขยาย
DollarBidder
ชั้นเรียน - วิธีการทั้งหมดควรกลับเป็น 500ms หรือน้อยกว่า
- บอทไม่จำเป็นต้องถูกกำหนดไว้ล่วงหน้า
- การเสนอราคาของคุณไม่จำเป็นต้องเป็นทวีคูณของ 5 ¢
- $ 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
แบบสุ่ม ..