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-1
debe 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,352
el 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 P
debe ir a la extrema derecha,
luego los tres montones de tamaño 2
deben ir a continuación,
pero MM
deben ir más a la derecha seguidos por el GG
y luego WW
desde 100K > 25 > 1
entonces los dos montones de tamaño 3
van a la izquierda,
pero el CCC
must ir a la derecha del BBB
desde25K > 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 int
tipos firmados ?
2**32-1
es un caso de prueba, pero estoy dispuesto a reducirlo. (Dato interesante: PokerStars tiene un 25B
chip en su carpeta de imágenes.)