Примітка. Це пов’язано з варіацією гри Rummikub
Передумови та правила
Rummikub - гра на основі плитки. Існує чотири кольори: червоний, помаранчевий, синій та чорний. Для кожного кольору є 13 плиток (марковані від 1 до 13), також є 2 джокера, які не залежать від кольору, отже, всього 54 штуки. У цій варіації Румікуба кожен гравець отримує 14 плиток і повинен отримати ще одну плитку і скинути ще одну в кожному раунді, таким чином, щоб кількість плиток була постійною. Гравці не бачать плиток один одного. Мета - згрупувати плитки так, щоб усі шматки належали принаймні до однієї групи (див. Нижче). Коли гравець згрупує всі шматки, вони скидають свою плиткову дошку і розкривають свої шматки. Потім інші перевіряють, чи всі комбінації дійсні, і якщо вони є, гравець виграє раунд.
Як можна згрупувати плитку?
Є лише два типи груп:
Багатоколірні групи:
- Вони складаються з 3 або 4 плиток.
- Вони містять лише плитки з однаковою кількістю на них.
- Всі плитки мають різні кольори.
- Приклад:
RED 9, BLUE 9, BLACK 9
.
Одноколірні групи:
- Вони складаються щонайменше з 3 плиток.
- Вони не можуть містити більше 13 плиток.
- Вони містять лише плитки з різними послідовними номерами на них у порядку зростання.
- Всі плитки мають однаковий колір.
- Плитки, позначені маркуванням,
1
не можуть бути місцями після маркування плитки13
. - Приклад:
RED 5, RED 6, RED 7
.
Зачекайте, що роблять Джокери?
Джокери можуть замінити будь-яку частину гри. Наприклад, нашим першим прикладом може стати JOKER, BLUE 9, BLACK 9
, RED 9, JOKER, BLACK 9
або RED 9, BLUE 9, JOKER
. Це ж стосується і іншого нашого прикладу. Тим НЕ менше, один може НЕ розмістити два джокера в одній і тій же групі, так що речі люблять JOKER, ORANGE 8, JOKER
заборонені.
Завдання
З огляду на групу плиток Румікуб, визначте, чи справді вона. Ви гарантуєте, що не буде показано жодних повторюваних плиток, за винятком двох джокерів і що плитки, які ви отримаєте як вхідні дані, дійсні (наприклад, такі речі, як, наприклад 60
, не з’являться).
Введення-виведення
Ви можете взяти вклад і надати вихід будь-яким стандартним методом.
Деякі допустимі вхідні формати: список рядків, список кортежів, вкладені списки, рядки чи будь-що інше, що вам здається підходящим. Кольори можна сприймати як рядки (наприклад:) "Blue","Red", etc.
, як рядкові абревіатури (будь ласка, зробіть розрізнені сині та чорні плитки) або як цілі числа, що відповідають кольору. Що стосується Джокерів, то слід згадати те, як ваша програма приймає їх як вхідні дані. Якщо ви виберете Strings, у вас може виникнути щось на зразок RED 9, JOKER, ...
, якщо ви виберете кортежі, які ви можете мати, (9,"RED"), ("JOKER")
або щось еквівалентне. Якщо це допоможе, ви можете отримати колір для цього Джокера (який не повинен впливати на вихід вашої програми). Наприклад, у вас може бути ("JOKER","RED")
або ("JOKER","BLUE")
, але це ніяк не повинно впливати на вихід.
Щодо результату, застосовуються стандартні правила для вирішення проблеми .
Працювали приклади
Візьмемо приклад, який, сподіваємось, полегшить розуміння. Дано групу наступним чином, де кожен кортеж являє собою плитку:
[(9, "ЧЕРВОНІ"), (9, "ORANGE"), ("JOKER"), (9, "BLACK")]
Це повинно повернути триєдине значення, оскільки вхід правильний. У цьому випадку Джокер підміняє (9, "BLUE")
, і вони утворюють багатоколірну групу.
Якщо вам дадуть таку групу:
[(9, "BLUE"), (9, "ORANGE"), (9, "RED"), (9, "BLACK"), ("JOKER")]
Це було б недійсно, і, таким чином, ви повинні програмі повернути хибне значення, оскільки жовтому джокеру не залишається нічого, як максимальна кількість карт у багатоколірній групі - 4.
Додаткові випробувальні випадки
Вони розроблені для розширеного тестового набору, який охоплює майже всі можливі ситуації:
Вхід -> Вихід [(1, "СВІТИЙ"), (2, "СВІТИЙ"), (3, "СВІТИЙ"), (4, "СВІТИЙ"), (5, "СВІТИЙ"), (6, "СВІТИЙ")] - > truthy [(6, "СВІТИЙ"), (6, "ЧЕРВЕНИЙ"), (6, "ЧЕРНИЙ]] -> truthy [(5, "ЧЕРНИЙ"), (6, "ЧЕРНИЙ"), (7, "ЧЕРНИЙ"), (8, "ЧОРНИЙ"), (9, "ЧЕРНИЙ"), (10, "ЧОРНИЙ"), ( "ДЖОКЕР"), (12, "ЧЕРНИЙ")] -> трибуна [("JOKER"), (3, "BLUE"), (3, "RED")] -> truthy [(8, "ЧЕРНИЙ"), (2, "ЧЕРВОНІ"), (13, "СВІТИЙ")] -> хибність [(4, "ЧЕРВЕНА"), (3, "ЧЕРВЕНА"), (5, "ЧЕРВЕНА")] -> хибність [(5, "ЧЕРНИЙ"), (6, "ЧЕРНИЙ]] -> хибність [("JOKER"), (5, "RED"), ("JOKER")] -> фальш [(4, "КРАСНИЙ"), (5, "ЧЕРВЕНИЙ"), (6, СВІТИЙ)]] -> хибність [(4, "ЧЕРВЕНИЙ"), ("ДЖОКЕР"), (5, "ЧЕРВЕНИЙ")] -> фальш [(12, "ЧЕРНИЙ"), (13, "ЧЕРНИЙ), (1," ЧЕРНИЙ ")] -> хибний
Це код-гольф , тому найкоротший код у байтах кожною мовою виграє!