Гра в кубики Міа представляє дуже нетривіальний порядок наборів розміру два:
{3,1} < {3,2} < {4,1} < {4,2} < {4,3} < {5,1} < {5,4} < {6,1} < {6,5} < {1,1} < {2,2} < {6,6} < {1,2}
Загалом, порядок усередині кортежу не має значення {x,y}={y,x},
{1,2}більший за будь-що інше, пари більше, ніж непарні, і числове значення визначається у випадку зрівняння.
Тепер припустимо, що ви хочете використовувати nкістки. Також кубики мають mобличчя.
Приклад:
{1,5,3,4} < {1,2,6,3}оскільки 5431 <6321{1,2,3,5} < {1,1,5,6} < {1,1,5,5}, {1,1,6,6} < {1,1,1,3} < {2,2,2,3} < {1,1,1,1} < {1,2,3,4}{2,2,5} < {1,1,6}оскільки обидва набори мають по одній парі і 611> 522
У двох словах, {1, ..., n}більше, ніж все інше. Нехай p > qтоді p-of-a-kind є більшим ніж q-of-a-kind. У разі нічиєї виграє другий (, третій, ...) - найдовший у своєму роді виграш. Нарешті, якщо ще не вдалося прийняти рішення, виграє найбільше числове значення. Числове значення набору - це найбільше ціле число, яке ви можете побудувати з доступних чисел у наборі, використовуючи конкатенацію. Приклад:
{2,5,4,3}стає 5432{4,11,3,4}стає B443 (> дозволено 6-гранні кістки, B = 11)
Ваше завдання полягає в тому, щоб написати найменшу можливу програму (тобто функцію) на обрану вами мову, яка з урахуванням двох контейнерів (список, масив, набір, ...) повертає, чи виграє перший чи другий.
Примітка. Ви можете припустити, що два контейнери мають однакову довжину і містять лише додатні цілі числа, але нічого іншого. Особливо вони не можуть бути відсортовані. Повернутим значенням може бути будь-що, наприклад {-1, 0, 1} для {перша перемога, нічия, друга перемога}.
{1,1,6},{2,2,5}? Чи порівнюєте ви числове значення найбільшого у своєму роді чи будь-яких кубиків?