Il poker ha l'etichetta nel modo in cui disponi le tue fiches, spesso applicate nei tornei: le tue fiches potrebbero non essere "nascoste" dai tuoi avversari essendo dietro gli altri, principalmente per non nascondere alcune fiche di grande denominazione.
La sfida
Stiamo per giocare a poker in ASCII, quindi abbiamo bisogno di scrivere una funzione o un programma che attirerà il nostro accordo stack ASCII dato il suo valore complessivo, n
.
Input
- Un numero intero positivo, n
(fino a che 2**32-1
deve essere gestito)
Output
: una rappresentazione ASCII della disposizione dello stack come definito di seguito.
Questo può contenere spazi bianchi a destra di ogni riga in modo tale che nessuna riga sia più lunga di un carattere in più rispetto alla lunghezza utilizzata dai caratteri stampabili nella riga più lunga (in basso);
Questo può contenere una nuova riga finale singola; e
I personaggi che rappresentano i chip possono essere in minuscolo se preferisci.
La disposizione dello stack dovrà:
- Contenere il minor numero possibile di chip, date le denominazioni (vedi sotto);
- Avrà chip di pari valore in "pile" (colonne);
- Ordinare in modo tale che le pile più corte siano a destra delle pile più alte; e
- Essere ordinati in modo tale che pile con gettoni di taglio maggiore siano a destra di pile di uguali dimensioni di taglio inferiore (che rappresentano che sono visibili ai nostri avversari sulla destra)
I chip stessi devono essere rappresentati come singoli personaggi che identificano il loro colore:
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
Esempio
Per n = 276,352
il minor numero di chip sarebbe:
2 * 100K + 3 * 25K + 1 * 1K + 3 * 100 + 2 * 25 + 2 * 1
MM CCC P BBB GG WW
Il singolo P
deve andare all'estrema destra,
quindi le tre pile di dimensioni 2
devono andare dopo,
ma il MM
must deve andare più a destra seguito da GG
e poi WW
da 100K > 25 > 1
allora le due pile di dimensioni 3
vanno a sinistra,
ma il CCC
must vai a destra del BBB
da25K > 100
Ora dobbiamo posizionare questi chip in stack effettivi, per rendere il nostro output:
BC
BCWGM
BCWGMP
Casi test
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
Questo è code-golf , quindi vince il codice più breve in byte. Niente scappatoie, yada yada, conosci il trapano.
2**31-1
o hai intenzione di essere più grande della maggior parte dei int
tipi firmati ?
2**32-1
è un caso di prova, ma sono disposto ad abbassarlo. (Fatto interessante: PokerStars ha un 25B
chip nella cartella delle immagini.)