Liar's Dice - досить проста гра в кубики. Я бачив кілька різних варіантів правил, але ось версія, з якою я найбільше знайома:
- Кожен гравець починається з 5d6
- За винятком випадків купівлі кісток в кінці раунду, кожен гравець може бачити свої власні кістки, але не ті, які мають будь-який противник
- На початку будь-якого даного раунду всі гравці роблять усі кубики, які вони мають
- Тоді один гравець (зазвичай це або переможець попереднього раунду, або гравець зліва від гравця, який стартував останній раз; ми будемо використовувати колишнього для цього KotH; з випадковим гравцем, який починає перший раунд) здогадується про те, скільки конкретної кількості стоїть на столі (ТОМИ ДИВАТИ)
- Ставки продовжуються праворуч, щоразу піднімаючись вище (наприклад, 3 п'яти, 3 шістдесят і 4 двійки - це вище, ніж 3 четвірки, але 3 трійки - ні; 4 - також вище; 4 - також вище, але ставки на ті, ймовірно, ставлять вас на недолік); поки будь-який гравець не покликає гравця, який передує їм брехуном
- У цей момент усі гравці розкривають свої кубики і підраховують кількість останньої ставки на номер на столі взагалі
- Якщо загальна сума нижча, ніж ставка, гравець, який зробив ставку, повинен дати загибель гравцеві, який назвав їх брехуном, інакше гравець, який назвав учасника торгів брехуном, повинен дати загибель учаснику торгів (таким чином учасник виграє якщо їх принаймні стільки ж, скільки він запропонував, не повинно бути точного числа)
- Коли у вас закінчиться кістки, ви програєте
- Виграє останній стоїть гравець
Наприклад:
У гравця один 1,1,2,4,6 Гравець два має 1,2,2,3,5 Гравець три має 1,3,3,4,6 Гравець один: три шести. Гравець два: чотири двійки. Гравець три: чотири трійки. Гравець один: п'ять двійників. Гравець два: шість двоє. Гравець три: шість троє. Гравець один: шість четвереньків. Гравець два: брехун! Вони розкривають свої кістки і підраховують тих (бо дикі) та четвереньки. Виявляється, насправді рівно шість четверень. Тож гравець два дає гравцеві один штамб. Вони відскакують, і один гравець починає наступний раунд.
Ви повинні написати бота, щоб грати в цю гру. Він повинен реалізувати такий абстрактний клас java:
public abstract class Player {
public Player() {}
public String toString() {
return this.getClass().getSimpleName();
}
public abstract String bid(int yourId, int[] diceEachPlayerHas, int[] yourDice, String[] bids);
}
- Ви повинні застосувати метод встановлення ставок
- Перший аргумент - поточна позиція вашого бота в порядку повороту, другий - це масив, який показує, скільки кісток на даний момент має кожен гравець (включаючи себе), третій - це масив із значеннями, які наразі відображаються на ваших власних кубиках, а четвертий - масив усіх ставок, зроблених з початку поточного раунду - матиме довжину 0, якщо ви робите першу пропозицію раунду
- Вихід повинен бути або рядком форми "число цифра", або рядком "Брехун!" називати попереднього учасника торгів брехуном.
- Якщо ваш вихід форматований незаконно, ви будете усунені.
- Ви можете перекрити метод toString, але цього не потрібно. Однак ви не можете редагувати його жодним чином, що заважає читати виводу контролера.
- Вам дозволяється викликати будь-які інші публічні методи контролера, але не його основний метод.
- Ви можете читати та редагувати лише файли у запущеному каталозі з префіксом власного імені вашого бота
- Вам заборонено брати дані з будь-якого іншого джерела
- Змінні екземплярів скидаються на початку кожної нової гри, але статичні змінні - ні.
Оцінка балів
- Один набір з 1000 ігор, з 3-5 гравцями в кожній, буде імітуватися щоразу, коли додається бот (як тільки будуть подані три або більше ботів), забитий так, як показано у джерелі контролера (у будь-якій грі, ви отримуйте 1 на початку кожного свого ходу, 10 кожного разу, коли ви забираєте штамп, і 1000 бонусів, якщо ви виграєте); примусовий ліміт 5000 TURNS (не раундів) на кожну гру.
- Ваш бот буде набраний його балом з останнього набору ігор; плюс десять разів більший за його кількість голосів, якщо це не заперечує. (Останнє навряд чи матиме суттєвий вплив на рахунок)
Джерело контролера можна знайти тут.
Оцінки станом на 19.06.2015:
Badnomial: 434,924 + 6x10 = 424,984
Nobody: 282,329 + 6x10 = 282,389
StraightShooter: 265,205 + 5x10 = 265,255
MostlyHonestAbe: 158,958 + 4x10 = 158,998
The Pirate: 157,005 + 1x10 = 157,015
Statistician: 144,012 + 2x10 = 144,032
Fidelio: 49,973 + 2x10 = 49,993
Absurd Bot: 6,831
DrHouse: 2,638 + 3x10 = 2,668
diceEachPlayerHas[yourId]
= ваш рахунок на кубики, і bids[yourId]
це ваша перша ставка (або нульова, якщо це ваша перша черга). Це правильно?