Estaba viendo el campeonato mundial de billar y me preguntaba ...
Puntuación de billar
En el juego de billar hay ciertas reglas que también debes cumplir:
- Cuando hay bolas rojas en la mesa, durante tu turno primero debes colocar una bola roja.
- Después de colocar cada bola roja, debes colocar una bola de color (no roja) (la bola de color en maceta se vuelve a colocar sobre la mesa)
- Después de que todas las bolas rojas estén arriba (hay 15), primero puede elegir una bola de color y luego comenzar con la bola con la puntuación más baja y avanzar hasta la bola con la puntuación más alta (no se reemplazan)
- No colocar macetas en ningún punto termina tu turno.
- Puntos por pelota
- Bola roja: 1 punto
- Bola amarilla: 2 puntos
- Bola verde: 3 puntos
- Bola marrón: 4 puntos
- Bola azul: 5 puntos
- Bola rosa: 6 puntos
- Balón negro: 7 puntos
La pregunta
Comienzas con una mesa con todas las bolas todavía en ella - 15 rojas y una de cada una de las otras bolas de colores - y se te da la puntuación de un jugador en el billar después de su primer turno, ¿cuáles son las formas en que podrían haber logrado esto? ¿Puntuación?
La entrada será una puntuación que va del 1 al 147. Puede elegir si es un entero o una cadena. La salida debe ser las diferentes combinaciones de la cantidad de veces que macetaste cada bola.
Casos de prueba:
Input: 4
Output:
1r 1g
2r 1y
Input: 25
Output:
4r 3b
5r 2b 1br 1y
5r 2b 2g
...
9r 8y
Reglas:
- Puede elegir si genera las posibilidades divididas por una nueva línea o un separador de algún tipo (/ ,; | \ o incluso otros que me faltan)
Este es codegolf, por lo que gana el código más corto.
"5r 3b 2g"
podría salir como[5,0,2,0,3,0,0]
(siempre y cuando sea consistente)?b
para marrón ybl
para azul; entoncesbk
para negro? ¿Podríamos usarn
,e
yk
(últimas letras) para estos tres? ¿Qué taldleruna
identificar los ocho colores (tercera letra de cada uno)?Respuestas:
Gelatina , 66 bytes
Bueno, ¡es demasiado lento para TIO ahora!
... así que aquí hay una pasta de las 2636 formas de hacer exactamente 100 producidos sin conexión.
... y aquí hay una versión que se ejecutará allí con solo SEIS rojos (pausa máxima = 75)
Imprime una cuadrícula de números, cada línea es una lista de valores de bola separados por espacios (por ejemplo, tres rojos y dos verdes estarían en una lectura de línea
1 1 1 3 3
).Para una versión agrupada de valores que imprime líneas de conteos junto con los nombres completos de las bolas, a 102 bytes:
¿Cómo?
fuente
JavaScript (ES7),
188180178 bytesDevuelve una matriz de matrices (ordenadas de rojo a negro).
Comentado
Nota : Esta versión no incluye la última optimización activada
p
(ahora inicializada en 7), lo que hace que la lógica sea más difícil de entender.Salida de ejemplo
A continuación se muestra la salida para n = 140:
Manifestación
Esto es demasiado lento para un fragmento. Puedes probarlo aquí en su lugar. (Puede recibir una o dos alertas de script que no responden , pero eventualmente debería completarse).
fuente