¡Mañana es el festival del Medio Otoño, y en el espíritu de esas vacaciones, presentaré un juego de apuestas que nosotros (la gente de Xiamen ) jugamos durante las vacaciones!
Reglas
El juego se juega con seis dados de 6 lados. Las diferentes combinaciones de números tienen diferentes rangos, con un énfasis especial en los cuatro y los unos. Su trabajo es escribir un programa / función que clasifique la mano, dado un lanzamiento de 6 dados. Aquí están los rangos (he modificado / simplificado un poco las reglas):
¡Creo que solo los chinos pueden hacer este desafío! Bien, bien, aquí hay algunas explicaciones en inglés.
- 0: 4 cuatro y 2 unos.
- 1: 6 cuatros.
- 2: 6 unos.
- 3: 6 de cualquier tipo, excepto cuatros y unos.
- 4: 5 cuatros.
- 5: 5 de cualquier tipo, excepto para los cuatro.
- 6: 4 cuatros.
- 7: derecho. (1-6)
- 8: 3 cuatro.
- 9: 4 de cualquier tipo excepto 4.
- 10: 2 cuatros.
- 11: 1 cuatro.
- 12: nada.
Entrada
6 números, una matriz de 6 números o una cadena de 6 números que representan los valores de los 6 dados del 1 al 6
Salida
Su programa / función puede devolver / emitir cualquier cosa para indicar el rango, siempre que cada rango esté indicado por una salida y viceversa. Ex. Usando los números 0-12, 1-13, etc.
Ejemplos (usando 0-12 como salidas)
[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
Este es el código de golf, por lo que gana el conteo de bytes más corto.
[1,2,3,5,6,6]->13
?10
no se omite.Respuestas:
Carbón , 55 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. No se salta 10. Explicación:
Calcule la frecuencia más alta de cualquier dígito.
Si hay un 6 de un tipo, reste la posición del dígito en la cadena
14
de 2. Esto da como resultado 1 para 6 4s, 2 para 6 1s y 3 para 6 de cualquier otra cosa.Si hay un 5 de un tipo, entonces el resultado es 5 a menos que haya 5 4s, en cuyo caso se resta 1.
Si hay un 4 de un tipo, entonces si hay 4 4s, entonces el resultado es 6 a menos que haya 2 1s, en cuyo caso el resultado es 0, de lo contrario, el resultado es 9.
Si todos los dígitos son diferentes, entonces el resultado es 7.
De lo contrario, el resultado es 12 - (4 >> (3 - # de 4s)).
fuente
JavaScript (ES6), 88 bytes
Pruébalo en línea! o Prueba todos los rollos posibles!
Emite un número entero de acuerdo con la siguiente asignación:
¿Cómo?
Método
La salida se calcula realizando un OR bit a bit entre:
Excepciones:
Mesa
Ejemplo
Comentado
fuente
R , 100 bytes
Codifique la puntuación como un grupo de condicionales indexados. Más simple que mi primer enfoque fibroso-regex.
Edición: error corregido y ahora clasifica todas las tiradas.
Pruébalo en línea!
fuente
JavaScript (Node.js) , 169 bytes
Pruébalo en línea!
Devoluciones
1..13
fuente
Python 2 ,
148119 bytes-27 bytes gracias a los ovs (1. uso de
.count
permitirmap
que se use a; 2. eliminación de redundantes0
en el corte; 3. uso de un enin
lugar de unmax
; 4. acortado(F==4)*O==2
aF==4>O==2
[desde golfed hastaF>3>O>1
])Pruébalo en línea!
fuente
d
solo se necesita una, esta es más corta como un programa completo .Pyth, 60 bytes
Mapas para revertir rango, 0-12. Pruébelo en línea aquí , o verifique todos los casos de prueba a la vez aquí .
La asignación completa utilizada es la siguiente:
Esto funciona asignando los valores de los dados a las frecuencias, luego calculando el valor de varias reglas y tomando el máximo del conjunto.
fuente
Retina ,
137126bytes-11 bytes gracias a @Neil .
La salida está indexada a 0 (
0..12
).Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
Reemplace cada 4 con una 'A':
Ordene todos los dígitos de entrada (las A estarán en la parte posterior):
Cada dos líneas reemplaza la entrada con la salida esperada:
fuente
4
con algo fuera del rango1-6
para que se clasifique automáticamente en un extremo (no estoy seguro de si hace una diferencia en qué extremo se clasifica).05AB1E ,
5755 bytesPuerto de la respuesta de carbón de @Neil , porque mi enfoque inicial ya estaba en 60 bytes y aún no había terminado. Sin embargo, mi respuesta actual probablemente se pueda jugar un poco más.
Ingrese como una lista de dígitos.
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
Ruby , 100 bytes
Pruébalo en línea!
Cómo funciona:
Cuente las ocurrencias de cada número en la matriz, anteponga el número de 1s y agregue el número de 4s.
Después de eso, intenta combinar con diferentes patrones de expresiones regulares.
fuente