Demain, c'est le festival de la mi-automne, et dans l'esprit de cette fête, je présenterai un jeu de hasard auquel nous (les gens de Xiamen ) jouons pendant les vacances!
Règles
Le jeu se joue avec six dés à 6 faces. Différentes combinaisons de nombres ont des rangs différents, avec un accent particulier sur les quatre et les uns. Votre travail consiste à écrire un programme / une fonction qui classera la main, compte tenu d'un lancer de 6 dés. Voici les classements (j'ai un peu modifié / simplifié les règles):
Je suppose que seuls les Chinois peuvent relever ce défi! D'accord, voici quelques explications en anglais.
- 0: 4 fours et 2 uns.
- 1: 6 fours.
- 2: 6 unités.
- 3: 6 de toute nature sauf les quatre et les uns.
- 4: 5 fours.
- 5: 5 de toute nature, à l'exception des quatre.
- 6: 4 fours.
- 7: Droit. (1-6)
- 8: 3 fours.
- 9: 4 de toute nature sauf 4.
- 10: 2 quatre.
- 11: 1 quatre.
- 12: Rien.
Contribution
6 numéros, un tableau de 6 chiffres ou une chaîne de 6 chiffres qui représentent les valeurs des 6 lancers de dés de 1 à 6
Production
Votre programme / fonction peut renvoyer / afficher n'importe quoi pour indiquer le rang, tant que chaque rang est indiqué par une sortie et vice versa. Ex. Utilisation des chiffres 0-12, 1-13, etc.
Exemples (en utilisant 0-12 comme sorties)
[1,1,1,1,1,1]->2
[1,4,4,4,1,4]->0
[3,6,5,1,4,2]->7
[1,2,3,5,6,6]->12
[3,6,3,3,3,3]->5
[4,5,5,5,5,5]->5
Il s'agit de code-golf, donc le nombre d'octets le plus court l'emporte!
[1,2,3,5,6,6]->13
??10
n'est pas ignoré.Réponses:
Fusain , 55 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Ne saute pas 10. Explication:
Calculez la fréquence la plus élevée de n'importe quel chiffre.
S'il y a un 6 d'une sorte, soustrayez la position du chiffre dans la chaîne
14
de 2. Cela donne 1 pour 6 4s, 2 pour 6 1s et 3 pour 6 de toute autre chose.S'il y a un 5 d'une sorte, alors le résultat est 5 à moins qu'il y ait 5 4, auquel cas 1 est soustrait.
S'il y a un 4 d'une sorte, alors s'il y a 4 4 alors le résultat est 6 à moins qu'il y ait 2 1 auquel cas le résultat est 0, sinon le résultat est 9.
Si tous les chiffres sont différents, le résultat est 7.
Sinon, le résultat est 12 - (4 >> (3 - # de 4s)).
la source
JavaScript (ES6), 88 octets
Essayez-le en ligne! ou Testez tous les rouleaux possibles!
Génère un entier selon le mappage suivant:
Comment?
Méthode
La sortie est calculée en effectuant un OR au niveau du bit entre:
Exceptions:
Table
Exemple
Commenté
la source
R , 100 octets
Encodez la partition sous forme de groupe de conditions indexées. Plus simple que ma première approche de stringy-regex.
Modifier le bug corrigé et classer maintenant tous les rouleaux.
Essayez-le en ligne!
la source
JavaScript (Node.js) , 169 octets
Essayez-le en ligne!
Retour
1..13
la source
Python 2 ,
148119 octets-27 octets grâce aux ovs (1. utilisation de
.count
permettremap
à a d'être utilisé; 2. suppression du redondant0
dans la tranche; 3. utilisation d'unin
plutôt que d'unmax
; 4. raccourci(F==4)*O==2
àF==4>O==2
[depuis le golfF>3>O>1
]])Essayez-le en ligne!
la source
d
n'en faut qu'une, elle est plus courte en tant que programme complet .Pyth, 60 octets
Mappe au rang inversé, 0-12. Essayez-le en ligne ici ou vérifiez tous les cas de test en même temps ici .
Le mappage complet utilisé est le suivant:
Cela fonctionne en mappant les valeurs des dés aux fréquences, puis en calculant la valeur de plusieurs règles et en prenant le maximum de l'ensemble.
la source
Rétine ,
137126 octets-11 octets grâce à @Neil .
La sortie est indexée 0 (
0..12
).Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
Remplacez tous les 4 par un «A»:
Triez tous les chiffres d'entrée (les A seront à l'arrière):
Toutes les deux lignes, l'entrée est remplacée par la sortie attendue:
la source
4
par quelque chose en dehors de la plage1-6
pour obtenir un tri automatique à une extrémité (je ne sais pas si cela fait une différence à quelle extrémité vous triez).05AB1E ,
5755 octetsRéponse de Port of @Neil Charcoal , car mon approche initiale était déjà à 60 octets et je n'avais pas encore fini. Ma réponse actuelle peut probablement être encore plus jouée.
Saisie sous forme de liste de chiffres.
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
Ruby , 100 octets
Essayez-le en ligne!
Comment ça fonctionne:
Comptez les occurrences de chaque nombre dans le tableau, ajoutez le nombre de 1 et ajoutez le nombre de 4.
Après cela, essayez de faire correspondre différents motifs d'expression régulière.
la source