Игра в кости Миа вводит очень нетривиальный порядок наборов второго размера:
{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)
Ваша задача - написать наименьшую возможную программу (т. Е. Функцию) на выбранном вами языке, которая при наличии двух контейнеров (list, array, set, ...) возвращает, выиграет первый или второй.
Примечание: вы можете предположить, что два контейнера имеют одинаковую длину и содержат только положительные целые числа, но не более того. Особенно они могут быть не отсортированы. Возвращаемое значение может быть любым, например, {-1, 0, 1} для {первых побед, ничьих, вторых побед}.
{1,1,6}
,{2,2,5}
? Сравниваете ли вы числовое значение самого большого р-типа или какой-либо кости?