Poker hat eine Etikette, wie Sie Ihre Chips arrangieren, die oft bei Turnieren durchgesetzt wird - Ihre Chips können Ihren Gegnern nicht "verborgen" werden, indem Sie hinter anderen Chips stehen, meistens, um einige Chips mit großem Nennwert nicht zu verbergen.
Die Herausforderung
Wir werden Poker in ASCII spielen, also müssen wir eine Funktion oder ein Programm schreiben, die / das unsere ASCII - Chipstapelanordnung aufgrund ihres Gesamtwerts zeichnet n
.
Eingabe
- Eine positive ganze Zahl n
(bis zu 2**32-1
sollte behandelt werden)
Ausgabe
- Eine ASCII-Darstellung der Stapelanordnung wie unten definiert.
Dies kann Leerzeichen rechts von jeder Zeile enthalten, sodass keine Zeile länger als ein Zeichen ist als die Länge, die druckbare Zeichen in der längsten (untersten) Zeile verwenden.
Dies kann eine einzelne nachgestellte neue Zeile enthalten. und
Die Zeichen, die Chips darstellen, können nach Belieben in Kleinbuchstaben geschrieben werden.
Die Stapelanordnung wird:
- Enthalten Sie die geringstmöglichen Chips, je nach Stückelung (siehe unten).
- Wird gleichwertige Chips in "Stapeln" (Spalten) haben;
- Sie müssen so angeordnet sein, dass die kürzeren Stapel rechts von den größeren Stapeln stehen. und
- Sie müssen so angeordnet sein, dass Stapel mit Chips mit höherem Nennwert rechts von gleich großen Stapeln mit niedrigerem Nennwert stehen (was bedeutet, dass sie für unsere Gegner auf der rechten Seite sichtbar sind).
Die Chips selbst sollen als einzelne Zeichen dargestellt werden, die ihre Farbe kennzeichnen:
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
Beispiel
Für n = 276,352
die kleinste Anzahl von Chips wäre:
2 * 100K + 3 * 25K + 1 * 1K + 3 * 100 + 2 * 25 + 2 * 1
MM CCC P BBB GG WW
Die einzelnen P
muss weitergehen ganz rechts,
dann die drei Stapel von Größe als 2
nächstes gehen muss,
- aber das MM
muss nach rechts durch die gefolgt gehen am weitesten GG
und dann die WW
da 100K > 25 > 1
dann die beiden Stapel von Größe 3
gehen auf der linken Seite
- aber das CCC
muss gehe nach rechts von dem BBB
da25K > 100
Jetzt müssen wir diese Chips in tatsächliche Stapel legen, um unsere Ausgabe zu machen:
BC
BCWGM
BCWGMP
Testfälle
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
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes. Keine Lücken, yada yada, du kennst die Übung.
2**31-1
, oder möchten Sie größer sein als die meisten signierten int
Typen?
2**32-1
handelt es sich um einen Testfall, aber ich bin bereit, ihn zu senken. (Interessante Tatsache: PokerStars hat einen 25B
Chip im Image-Ordner.)