Le jeu de dés Mia introduit un ordre très non trivial d'ensembles de taille deux:
{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 général, l'ordre dans un tuple n'a pas d'importance {x,y}={y,x}
,
{1,2}
est supérieur à toute autre chose, les paires sont supérieures aux non-paires et la valeur numérique décide en cas d'égalité.
Supposons maintenant que vous vouliez utiliser des n
dés. De plus, les dés ont des m
visages.
Exemple:
{1,5,3,4} < {1,2,6,3}
depuis 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}
puisque les deux ensembles ont chacun une paire et 611> 522
En un mot, {1, ..., n}
c'est plus que toute autre chose. Soit p > q
, alors p-of-a-kind est supérieur à q-of-a-kind. En cas d'égalité, la deuxième (, troisième, ...) - la plus longue victoire en son genre. Enfin, si aucune décision n'a pu encore être prise, la plus grande valeur numérique l'emporte. La valeur numérique d'un ensemble est le plus grand entier que vous pouvez créer à partir des nombres disponibles dans l'ensemble, en utilisant la concaténation. Exemple:
{2,5,4,3}
devient 5432{4,11,3,4}
devient B443 (> les dés à 6 faces sont autorisés, B = 11)
Votre tâche consiste à écrire le plus petit programme possible (c'est-à-dire la fonction) dans la langue de votre choix, qui, étant donné deux conteneurs (liste, tableau, ensemble, ...), retourne si le premier ou le second l'emporte.
Remarque: vous pouvez supposer que les deux conteneurs ont la même longueur et ne contiennent que des entiers positifs, mais rien d'autre. Surtout, ils peuvent ne pas être triés. La valeur de retour peut être n'importe quoi, par exemple {-1, 0, 1} pour {premières victoires, égalité, deuxièmes victoires}.
{1,1,6}
,{2,2,5}
? Comparez-vous la valeur numérique du plus grand p-of-a-kind ou de n'importe quel dé?Réponses:
Gelée , 16 octets
Prend une liste de listes dont chacune représente un rouleau (peut donc être plus de deux si vous le souhaitez) et retourne une liste des gagnants.
Essayez-le en ligne! ... alternativement voici une version qui trie les rouleaux du plus faible au plus fort à la place.
Comment?
la source
1,1,2
et1,2,2
sont considérés comme égaux, mais la spécification ne les distingue pas actuellement non plus.{1,1,5,6} < {1,1,5,5}
où6 > 5
. Pourriez-vous clarifier?ÐṀ
par un triÞ
, à des fins de test - en utilisant les éléments de l'exemple, il les trie dans le même ordre. L'ordre utilisé est: d'abord par si c'est "top-dog", puis par nombre de faces égales descendantes et enfin par faces uniques descendantes.JavaScript (ES6), 162 octets
Explication: prend deux tableaux comme paramètres.
g
convertit chaque tableau en une liste de comptes. La liste est ensuite vérifiée pour voir si elle correspond à un ensemble1..n
. Les nombres sont triés et les valeurs triées sont concaténées. Les deux résultats sont ensuite comparés. La valeur de retour est un entier positif si le deuxième tableau gagne et un entier négatif si le premier tableau gagne, sinon la valeur JavaScript falsifiéeundefined
est retournée.la source
PHP 333 octets
Je suppose qu'il y a moins de dés que de faces pour la valeur la plus élevée en tant que rue commençant par 1
J'en fais un peu plus. L'entrée est un tableau avec plus de deux valeurs. La sortie est le tableau trié.
Panne
la source
Julia (489 octets)
Lisible:
la source