421 est un jeu de dés assez populaire en France et dans certains autres pays européens. Il est principalement joué dans les bars et les pubs pour déterminer qui va acheter la prochaine série de boissons. Le jeu complet se déroule généralement en deux tours, avec des jetons dont chaque joueur essaie de se débarrasser, mais ce n'est pas pertinent ici. ( Page Wikipedia en français.)
Le jeu se joue avec 3 dés cubes standard.
Tâche
Votre tâche consiste à trier une liste non vide de jets de 3 dés distincts [X, Y, Z] du plus haut au plus bas, en appliquant les règles de score de ce jeu.
Notation de base
- 4,2,1 est la combinaison la plus élevée possible. Selon les règles, il peut marquer 8, 10 ou 11 points. Parce que nous trions les rouleaux plutôt que de compter les points, la valeur exacte n'a pas d'importance.
- Trois As: 1,1,1 est la deuxième combinaison la plus élevée et marque 7 points.
- Deux As: X, 1,1 (où X est 2 à 6) marque X points.
- Trois du genre: X, X, X (où X est 2 à 6) marque X points.
- Lignes droites: X, X + 1, X + 2 marque 2 points.
- Tous les autres jets marquent 1 point.
Établir des liens
Chaque fois que deux jets donnent le même nombre de points, les règles suivantes s'appliquent:
- Un Two-Aces est meilleur qu'un Three-of-a-Kind. Exemple: 5,1,1 bat 5,5,5 .
- Le Three-of-a-Kind 2,2,2 est meilleur qu'une ligne droite. Exemple: 2,2,2 battements 4,5,6 .
- Les lignes droites sont classées du plus bas au plus haut. Exemple: 4,5,6 battements 2,3,4 .
- Tous les autres jets sont réglés en triant les dés du plus haut au plus bas. Exemple: 6,5,2 battements 6,4,3 . (Par conséquent, la combinaison la plus basse possible dans le jeu est 2,2,1 .)
Vous trouverez ci-dessous les 56 rouleaux distincts possibles classés du plus haut au plus bas:
421 111 611 666 511 555 411 444 311 333 211 222 654 543 432 321
665 664 663 662 661 655 653 652 651 644 643 642 641 633 632 631
622 621 554 553 552 551 544 542 541 533 532 531 522 521 443 442
441 433 431 422 332 331 322 221
Règles du challenge
- Vous pouvez prendre les jets dans n'importe quel format raisonnable, comme une liste de listes
[[3,2,1],[4,2,1]]
, une liste de chaînes["321","421"]
, une liste d'entiers[321,421]
, etc. Cependant, chaque dé doit être clairement identifiable avec une valeur de 1 à 6 . - Pour chaque lancer, vous pouvez supposer que les dés sont triés du plus bas au plus élevé ou du plus élevé au plus bas, tant qu'ils sont cohérents. Veuillez indiquer dans votre réponse quelle commande vous attendez, le cas échéant.
- La réponse la plus courte en octets gagne!
Cas de test
Utilisation de listes de chaînes avec les dés triés du plus haut au plus bas:
Contributions
[ "321", "654" ]
[ "222", "321", "211" ]
[ "333", "311", "331", "111" ]
[ "111", "222", "333", "444" ]
[ "321", "421", "521", "621" ]
[ "422", "221", "442", "421", "222" ]
[ "222", "111", "421", "211", "651", "652", "543" ]
Résultats attendus
[ "654", "321" ]
[ "211", "222", "321" ]
[ "111", "311", "333", "331" ]
[ "111", "444", "333", "222" ]
[ "421", "321", "621", "521" ]
[ "421", "222", "442", "422", "221" ]
[ "421", "111", "211", "222", "543", "652", "651" ]
012
au lieu de123
)?Réponses:
Python , 93 octets
Essayez-le en ligne!
la source
sort
méthode.Retina 0.8.2 , 67 octets
Essayez-le en ligne! Le lien inclut des cas de test. Explication: La clé de tri numérique est générée comme suit:
la source
Gelée ,
3734 octetsUn lien monadique acceptant une liste de listes de lancers de dés (chaque tri décroissant) qui donne les lancers triés décroissant.
Essayez-le en ligne! Ou consultez une suite de tests ... ou essayez tous les rouleaux triés lexicographiquement
Comment?
Cette méthode génère une liste de tous les rouleaux du plus élevé au plus bas *, en remplaçant
[4,2,1]
avec0
(un rouleau d'entrée invalide), afin de classer chaque rouleau à l' aide du premier indice du atome de geléei
.* La liste comprend également des répétitions et des entrées redondantes qui n'affecteront pas le comportement:
la source
R , 73 octets
Essayez-le en ligne!
421 ... 221
)x % 37
au lieu de111
Explication:
Pour chacun des nombres, 5 clés sont calculées et utilisées hiérarchiquement pour trier le tableau:
la source
05AB1E ,
764845 octetsCela s'est avéré être beaucoup plus long que prévu, mais au moins, il est facile à mettre en œuvre. Va voir si je peux trouver une meilleure solution .. J'aifait la liste à la main maintenant, mais quand même un peu longue.Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
Voici la liste réelle générée par la première partie du code:
Essayez-le en ligne.
Comme vous pouvez le voir, il contient des éléments vides; des nombres comme
765
ou210
; et les nombres dans la plage[216, 112]
. Mais nous pouvons tous les ignorer, car les éléments que nous voulons réellement trier sont dans le bon ordre.Solution originale de 76 octets:
Essayez-le en ligne
ou vérifiez tous les cas de test(pas de suite de tests car il y a toujours un bogue avec le tri par les numéros compressés ne voyant pas le crochet fermant pour arrêter le tri ).Explication:
Explication
•X˜„Éε´õñ€9Ú ù?ä0₅9úd5àPÎøŒccuĆYÑ,o¾eíË¿¼À8@gID=vÆOΣxjF¨O‡J₃^εR™\èv•667в
:Tout entre les deux
•
est un nombre compressé généré avec le programme suivant:Essayez-le en ligne.
Z>
: Prenez le maximum de la liste + 1 (667
dans ce cas)β
: Convertir la liste de Base-667
en un seul numéro255B
: Et convertissez ce numéro unique en base255
(en utilisant la page de code de 05AB1E), nous avons donc notre numéro compressé .En l'utilisant,
667в
il convertit ce nombre compressé dans la liste d'origine.la source
JavaScript (ES7), 96 octets
Trie les rouleaux en adhérant étroitement aux règles de notation. Attend un tableau de chaînes avec des rouleaux individuels dans l'ordre décroissant de valeur, par exemple
["654"]
Essayez-le en ligne!
Explication
Les catégories de rouleaux sont portées aux exposants suivants:
Non golfé
Déballer mentalement les vérifications conditionnelles me donne mal à la tête, et je suis certain que cela peut en quelque sorte être approfondi ...
la source
Javascript, 101 caractères, 116 octets (UTF-8)
Prend un tableau de nombres représentant les rouleaux comme
[ 321, 654 ]
.Essayez-le en ligne!
Explication:
Je pris la première 16 des 56 possibles rouleaux distincts (ceux qui ne suivent pas vraiment un ordre) et je les encodée en chaîne:
"ƥoɣʚǿȫƛƼķōÓÞʎȟưŁ"
. Chaque caractère de cette chaîne correspond aux 16 premiers rouleaux possibles (ƥ
is421
,o
is111
, ...). Maintenant, pour chacun des deux élémentsa
etb
du tableau, nous vérifions simplement leur index à partir de la chaîne, s'ils sont inclus, l'index est utilisé, sinon (l'index est-1
) nous utilisons le numéro de rôle lui-même (nous le soustrayons700
pour inverser l'ordre des ceux non inclus, c'est- à- dire pour les trier par ordre décroissant).la source
Nettoyer ,
169102 octetsTous les échappements octaux sont comptés comme un octet, car le compilateur Clean les prendra volontiers de cette façon, mais TIO et SE ne le feront pas parce qu'ils ne sont pas bien formés UTF-8.
Essayez-le en ligne!
Utilise le fait que tous les lancers de dés, en tant qu'entiers modulo 256, sont uniques.
Idéalement, il
Char
est traité (principalement) comme un entier modulo 256.la source
Pyth , 48 octets
Attend l'entrée en tant que tableau imbriqué, chaque élément étant ordonné décroissant. Essayez-le en ligne ici ou vérifiez tous les cas de test en même temps ici .
la source
05AB1E , 24 octets
Essayez-le en ligne!
Algorithme global:
Détails:
la source