Ідея завдяки @ MartinBüttner з обговорення в чаті
Маджонг - гра в плитки, яка надзвичайно популярна в Азії. Зазвичай він грається з чотирма гравцями, і мета гри - це першою особою, яка виконає дійсну руку за допомогою плитки. Для цього завдання ми розглянемо спрощену версію гри - PPCG маджонг.
У PPCG маджонг, є три костюми - m, pі s- і плитки пронумеровані від 1до 9. Кожній плитці є рівно чотири примірники, і плитки позначаються її номером, а за підписом (наприклад 3m, 9s).
Завершена рука маджонгу PPCG складається з чотирьох наборів з трьох і пари, загалом 14 плиток.
Набір з трьох може бути будь-яким:
- Три однакові плитки (наприклад
4s 4s 4s, але не4m 4p 4s), або - Послідовність трьох послідовних плиток в одному костюмі (наприклад,
1s 2s 3sчи6p 7p 8pні,3s 4m 5mабо3p 5p 7p). Послідовності не обертаються (тому9m 1m 2mнедійсні).
Пара - це просто дві однакові плитки (наприклад 5s 5s).
Змагання
Ваша програма отримає пробіл, розділений пробілом у 13 плиток, причому кожна плитка з’явиться не більше чотирьох разів. Ви можете написати або повну програму, або функцію, яка виконує рядок.
Ваше завдання - знайти всі можливі 14-ту плитку ("чекає"), яка при додаванні до неї склала б завершену руку маджонгу PPCG. Виведені плитки повинні бути розділені пробілом, але можуть бути в будь-якому порядку. Допускається провідна або відстала пробіли.
Ваша програма повинна працювати в розумний проміжок часу, не довше хвилини.
Приклади
Input: 1m 1m 1m 4s 4s 4s 7p 7p 7p 3m 3m 3m 9s
Output: 9s
Input: 1m 1m 1m 3m 3m 3m 5m 5m 5m 2s 3s 7p 8p
Output:
Input: 1m 2m 2m 3m 3m 3m 3m 4m 1s 1s 9s 9s 9s
Output: 1s
Input: 1m 1m 1m 2m 3m 4m 5m 6m 7m 8m 9m 9m 9m
Output: 1m 2m 3m 4m 5m 6m 7m 8m 9m
Input: 1m 1m 1m 5p 2m 3m 5p 7s 8s 5p 9s 9s 9s
Output: 1m 4m 6s 9s
У першому прикладі 1m 4s 7p 3mвсі утворюють існуючі трійні, залишаючи самотника 9sдля формування пари.
У другому прикладі 2s 3sі 7p 8pможе утворювати лише послідовності, а решта плиток можуть утворювати лише трійки. Отже, жодна пара не може бути сформована, і виходу немає.
У третьому прикладі рука розпадається на 1m2m3m 2m3m4m 3m3m 1s1s 9s9s9s. Зазвичай це було б очікування 3m 1s, але, як усі чотири 3mвикористовувались, єдине доступне очікування - це 1s.
У четвертому прикладі всі mплитки завершують руку. Наприклад, для 1m, можна було б, 1m1m1m 1m2m3m 4m5m6m 7m8m9m 9m9mяка є завершеною рукою.
Спробуйте опрацювати решту четвертого прикладу та п'ятого прикладу :)
Оцінка балів
Це код-гольф , тому рішення в найменших байтах виграє. Застосовуються стандартні лазівки .