El póker tiene etiqueta en la forma en que organizas tus fichas, a menudo aplicadas en torneos: es posible que tus fichas no se "oculten" a tus oponentes al estar detrás de otros, principalmente para no ocultar algunas fichas de gran denominación.
El reto
Vamos a jugar al póker en ASCII, por lo que necesitamos escribir una función o programa que dibuje nuestra disposición de pila de chips ASCII dado su valor total n.
Entrada
: un entero positivo n(hasta se 2**32-1debe manejar)
Salida
: una representación ASCII de la disposición de la pila como se define a continuación.
Esto puede contener espacios en blanco a la derecha de cada línea, de modo que ninguna línea sea más larga que un carácter más que la longitud utilizada por los caracteres imprimibles en la línea más larga (inferior);
Esto puede contener una nueva línea final; y
Los caracteres que representan chips pueden estar en minúsculas si lo prefiere.
La disposición de la pila:
- Contener la menor cantidad de fichas posibles, dadas las denominaciones (ver más abajo);
- Tendrá fichas de igual valor en "pilas" (columnas);
- Ser ordenado de tal manera que las pilas más cortas estén a la derecha de las pilas más altas; y
- Ordene de manera que las pilas con fichas de mayor denominación estén a la derecha de las pilas de igual tamaño de denominaciones más bajas (lo que representa que son visibles para nuestro oponente a la derecha)
Las fichas en sí deben representarse como caracteres individuales que identifiquen su color:
White : 1 = W
Red : 5 = R
Green : 25 = G
Black : 100 = B
Yellow : 500 = Y
Pink : 1K = P
Orange : 5K = O
Cyan : 25K = C
Magenta : 100K = M
Aqua-blue : 500K = A
Lavender : 1M = L
Indigo : 5M = I
Turquoise : 25M = T
Violet : 100M = V
Silver : 500M = S
Ejemplo
Para n = 276,352el menor número de chips sería:
2 * 100K + 3 * 25K + 1 * 1K + 3 * 100 + 2 * 25 + 2 * 1
MM CCC P BBB GG WW
El single Pdebe ir a la extrema derecha,
luego los tres montones de tamaño 2deben ir a continuación,
pero MMdeben ir más a la derecha seguidos por el GGy luego WWdesde 100K > 25 > 1
entonces los dos montones de tamaño 3van a la izquierda,
pero el CCCmust ir a la derecha del BBBdesde25K > 100
Ahora debemos colocar estos chips en pilas reales, para hacer nuestra salida:
BC
BCWGM
BCWGMP
Casos de prueba
Input:
1
Output:
W
Input:
9378278
Output:
L
LWGPCM
LWGPCMB
LWGPCMBI
Input:
22222222
Output:
ROI
ROI
ROIWBPML
ROIWBPML
Input:
1342185143
Output:
WRCIV
WRCIVOLS
WRCIVOLSGBMT
Input:
2147483647
Output:
RMIS
RMISPC
RMISPCWL
RMISPCWLGBYOTV
Input:
4294967295
Output:
S
S
S
S
SRML
SRMLGOIT
SRMLGOITBPCV
SRMLGOITBPCVA
Este es el código de golf , por lo que gana el código más corto en bytes. Sin escapatorias, yada yada, ya sabes el ejercicio.
2**31-1, o tu intención es ser más grande que la mayoría de los inttipos firmados ?
2**32-1es un caso de prueba, pero estoy dispuesto a reducirlo. (Dato interesante: PokerStars tiene un 25Bchip en su carpeta de imágenes.)