Cheat - карткова гра, в якій ви намагаєтеся позбутися руки. Поворот виглядає приблизно приблизно так:
- Визначте, у якому рейтингу картки ви повинні грати в цьому ході. У більшості варіантів це на один ранг вище, ніж попередня черга.
- Грайте в 1-4 карти, обличчям вниз. Вони не повинні відповідати дійсному рангу. Якщо вони цього не роблять, це вважається обманом . У цей момент будь-який гравець може кинути вам виклик .
- Якщо ніхто не кидає вам виклику, гра продовжується до наступного гравця.
- Якщо хтось кидає вам виклик, і ви не обдурили, він повинен взяти всі розіграні карти.
- Якщо хтось кидає вам виклик, і ви обдурили, вам доведеться взяти всі розіграні карти.
Стратегія - це в основному поєднання блефу та підрахунку карт. Мені все одно погано в математиці, тому я збираюся обдурити чит і принести бота зі собою.
Вхідні дані
Вхід буде в будь-якому бажаному порядку або форматі:
- Рука гравця. Якщо я знаю, що у них повинні бути картки (наприклад, я бачив, як вони їх забирають), вони будуть перераховані у порядку зростання. Будь-які невідомі згодом будуть вказані як
?
. Наприклад, якщо у них є шість карт, і я знаю, що дві - це 1, а одна - 4, дійсне представлення руки114???
. завжди буде вказано після відомих карток.141???
і11???4
вони недійсні, і ваш код не потребує їх обробки. - Картки, які я точно знаю, не є частиною їхньої руки (я їх мав, я бачив, як хтось інший їх забирає тощо). Список буде у порядку зростання за рангом. Список може бути порожнім.
- Карти, на які гравця претендували грати. Якби вони заявляли, що вони грають у 3 7, можливий внесок тут
777
. Картки завжди будуть однакового рангу.
Кількість розіграних карт завжди буде 1-4, а чини завжди будуть 0-9. Ранг ніколи не з’явиться більше ніж чотири рази в їхній руці + не їхній руці.
Це приклад дійсного введення:
33577??
01555688
55
Це приклад недійсного введення:
35377?? # Out of order
7779 # Five 7's in total
23 # Two separate ranks played
Вихідні дані
Ціннісна цінність, якщо нам неодмінно потрібно кинути виклик. Цінність фальси, якщо ми, можливо, не хочемо кидати виклик.
Ми завжди кидаємо виклик, якщо знаємо, що вони обдурили. Ми знаємо, що вони обдурили, якщо грали в карти, які вони не могли мати:
12
3 # They don't have any 3's or ?'s
-------------
12?
33 # Fewer ?'s than played cards
-------------
123?
333
33 # Since we have three 3's they can't have two
В інший раз ми кидаємо виклик, якщо вони грають останні картки. Навіть якщо легітимний закон законний, це закінчило б гру, тому ми могли б також оскаржити її.
1
1 # They'd win, so challenge anyway
Більше тестових випадків
Truthy (повинен кинути виклик)
11445678?
22
-------------
????????
4
4444
-------------
12345678
9
Фальсі (не варто кидати виклик)
1?
222
2
-------------
12?
22
22
-------------
?????
1111
Оцінка балів
Найкоротший код виграє.