O jogo de dados Mia apresenta uma ordem não trivial de conjuntos de tamanho dois:
{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}
Em geral, a ordem dentro de uma tupla não importa {x,y}={y,x}
,
{1,2}
é maior que qualquer outra coisa, Pares são maiores que não pares e o valor numérico decide em caso de empate.
Agora, suponha que você queira usar n
dados. Além disso, os dados têm m
rostos.
Exemplo:
{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}
uma vez que os dois conjuntos têm cada par e 611> 522
Em poucas palavras, {1, ..., n}
é maior do que qualquer outra coisa. Vamos p > q
, então p-do-tipo é maior que q-do-tipo. Em caso de empate, o segundo (, terceiro, ...) - o maior do gênero vence. Finalmente, se nenhuma decisão puder ser tomada ainda, o maior valor numérico vence. O valor numérico de um conjunto é o maior número inteiro que você pode construir a partir dos números disponíveis no conjunto, usando concatenação. Exemplo:
{2,5,4,3}
torna-se 5432{4,11,3,4}
torna-se B443 (dados com 6 faces são permitidos, B = 11)
Sua tarefa é escrever o menor programa possível (ou seja, função) no idioma de sua escolha, que, considerando dois contêineres (lista, matriz, conjunto, ...) retorne se o primeiro ou o segundo vence.
Nota: você pode assumir que os dois contêineres têm o mesmo comprimento e contêm apenas números inteiros positivos, mas nada mais. Especialmente eles podem não ser classificados. O valor de retorno pode ser qualquer coisa, por exemplo, {-1, 0, 1} para {primeiras vitórias, empate, segundas vitórias}.
{1,1,6}
,{2,2,5}
? Você compara o valor numérico do maior p-de-um-tipo ou de qualquer dado?Respostas:
Gelatina , 16 bytes
Pega uma lista de listas, cada uma das quais representa um rolo (podendo ser mais de duas, se desejado) e retorna uma lista dos vencedores.
Experimente online! ... alternativamente, aqui está uma versão que classifica os rolos do mais fraco para o mais forte.
Como?
fonte
1,1,2
e1,2,2
são considerados iguais, mas a especificação atualmente não distingui-los também.{1,1,5,6} < {1,1,5,5}
onde6 > 5
. Você poderia esclarecer?ÐṀ
com uma espécie,Þ
, para fins de teste - usando os itens a partir do exemplo ele classifica-los na mesma ordem. A ordem usada é: primeiro se for "top-dog", depois por contagens de faces iguais descendo e finalmente por faces únicas descendo.JavaScript (ES6), 162 bytes
Explicação: Leva duas matrizes como parâmetros.
g
converte cada matriz em uma lista de contagens. A lista é então verificada para ver se corresponde a um conjunto1..n
. As contagens são classificadas e os valores classificados são concatenados. Os dois resultados são então comparados. O valor de retorno é um número inteiro positivo se a segunda matriz vencer e um número inteiro negativo se a primeira matriz vencer, caso contrário, o valor JavaScript falsoundefined
será retornado.fonte
PHP 333 bytes
Suponho que haja menos dados, em seguida, enfrenta o valor mais alto, pois a rua começa com 1
Eu faço um pouco mais. A entrada é uma matriz com mais de dois valores. Saída é a matriz classificada.
Demolir
fonte
Julia (489 bytes)
Legível:
fonte