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)?
bpara marrón y blpara azul; entonces bkpara negro? ¿Podríamos usar n, ey k(últimas letras) para estos tres? ¿Qué tal dlerunaidentificar los ocho colores (tercera letra de cada uno)?