El juego de dados Mia presenta un orden muy trivial de conjuntos de tamaño dos:
{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}
En general, el orden dentro de una tupla no importa {x,y}={y,x}
,
{1,2}
es mayor que cualquier otra cosa, los pares son mayores que los que no son pares y el valor numérico decide en caso de empate.
Ahora suponga que quiere usar n
dados. Además, los dados tienen m
caras.
Ejemplo:
{1,5,3,4} < {1,2,6,3}
desde 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}
ya que ambos conjuntos tienen cada par y 611> 522
En pocas palabras, {1, ..., n}
es mayor que cualquier otra cosa. Deje p > q
, entonces p-de-uno-tipo es mayor que q-de-uno-bueno. En caso de empate, el segundo (, tercero, ...) - el más largo de su tipo gana. Finalmente, si aún no se puede tomar una decisión, gana el mayor valor numérico. El valor numérico de un conjunto es el número entero más grande que puede construir a partir de los números disponibles en el conjunto, utilizando la concatenación. Ejemplo:
{2,5,4,3}
se convierte en 5432{4,11,3,4}
se convierte en B443 (> se permiten dados de 6 caras, B = 11)
Su tarea es escribir el programa más pequeño posible (es decir, función) en el idioma de su elección, que, dados dos contenedores (lista, matriz, conjunto, ...) devuelve si gana el primero o el segundo.
Nota: puede suponer que los dos contenedores tienen la misma longitud y contienen solo enteros positivos, pero nada más. Especialmente pueden no estar ordenados. El valor de retorno puede ser cualquier cosa, por ejemplo, {-1, 0, 1} para {primeras victorias, empate, segundas victorias}.
{1,1,6}
,{2,2,5}
? ¿Compara el valor numérico del mayor p-of-a-kind o de cualquier dado?Respuestas:
Jalea , 16 bytes
Toma una lista de listas, cada una de las cuales representa una tirada (por lo que puede ser más de dos si lo desea) y devuelve una lista de los ganadores.
Pruébalo en línea! ... alternativamente, aquí hay una versión que clasifica los rollos de más débil a más fuerte.
¿Cómo?
fuente
1,1,2
y1,2,2
se consideran iguales, pero la especificación tampoco los distingue actualmente.{1,1,5,6} < {1,1,5,5}
dónde6 > 5
. ¿Podrías aclarar?ÐṀ
con una especie,Þ
para propósitos de prueba - con ayuda de los elementos del ejemplo que los ordena en el mismo orden. El orden utilizado es: primero por si es "top-dog", luego por conteos de caras iguales descendentes y finalmente por caras únicas descendentes.JavaScript (ES6), 162 bytes
Explicación: Toma dos matrices como parámetros.
g
convierte cada matriz en una lista de recuentos. Luego se verifica la lista para ver si corresponde a un conjunto1..n
. Los recuentos se ordenan y los valores ordenados se concatenan. Luego se comparan los dos resultados. El valor de retorno es un entero positivo si gana la segunda matriz y un entero negativo si gana la primera matriz; de lo contrario, se devuelve el valor falso de JavaScriptundefined
.fuente
PHP 333 Bytes
Supongo que hay menos dados que caras para el valor más alto como calle que comienza con 1
Yo hago un poco más. La entrada es una matriz con más de dos valores. La salida es la matriz ordenada.
Descompostura
fuente
Julia (489 bytes)
Legible:
fuente