Poker ma etykietę w sposobie układania żetonów, często egzekwowaną w turniejach - twoje żetony nie mogą być „ukryte” przed przeciwnikami przez bycie za innymi, głównie po to, aby nie ukrywać dużych żetonów o dużych nominałach.
Wyzwanie
Będziemy grać w pokera w ASCII, więc musimy napisać funkcję lub program, który narysuje nasz układ żetonów ASCII, biorąc pod uwagę jego całkowitą wartość n
.
Dane wejściowe
- dodatnia liczba całkowita n
(maksymalnie 2**32-1
należy obsłużyć)
Dane wyjściowe
- reprezentacja ASCII układu stosu, jak zdefiniowano poniżej.
Może zawierać białą spację po prawej stronie każdego wiersza, tak że żaden wiersz nie jest dłuższy niż jeden znak więcej niż długość używana przez znaki drukowalne w najdłuższej (dolnej) linii;
Może zawierać pojedynczą końcową nową linię; i
Znaki reprezentujące żetony mogą być pisane małymi literami, jeśli wolisz.
Układ stosu:
- Zawierają jak najmniejszą liczbę żetonów, biorąc pod uwagę nominały (patrz poniżej);
- Będzie miał żetony o równej wartości w „stosach” (kolumnach);
- Zamów tak, aby krótsze stosy znajdowały się po prawej stronie wyższych stosów; i
- Ułóż je tak, aby stosy z żetonami o większych nominałach były po prawej stronie stosów o mniejszych nominałach równej wielkości (co oznacza, że są widoczne dla naszego przeciwnika (przeciwników) po prawej stronie)
Same żetony należy przedstawić jako pojedyncze znaki identyfikujące ich kolor:
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
Przykład
Dla n = 276,352
najmniejszej liczby żetonów byłoby:
2 * 100K + 3 * 25K + 1 * 1K + 3 * 100 + 2 * 25 + 2 * 1
MM CCC P BBB GG WW
Singiel P
musi iść po prawej stronie,
następnie trzy stosy wielkości 2
muszą przejść dalej,
- ale MM
musi iść najdalej w prawo, a GG
następnie, a następnie, WW
od 100K > 25 > 1
tego czasu dwa stosy wielkości 3
idą po lewej,
- ale CCC
musi idź na prawo od tego BBB
czasu25K > 100
Teraz musimy umieścić te żetony w rzeczywistych stosach, aby uzyskać nasz wynik:
BC
BCWGM
BCWGMP
Przypadki testowe
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
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach. Żadnych luk, Yada Yada, znasz wiertło.
2**31-1
, czy masz zamiar być większy niż większość podpisanychint
typów?2**32-1
jest to przypadek testowy, ale chętnie go obniżę. (Ciekawostka: PokerStars ma25B
chip w swoim folderze ze zdjęciami.)Odpowiedzi:
Pyth,
565552 bajtówKod zawiera niektóre niedrukowalne elementy, więc oto odwracalny
xxd
zrzut heksowy.Wypróbuj online. Zestaw testowy.
Pro wskazówka: aby zagrać
1
w golfa na końcu programu akceptującego niezerową liczbęQ
, wystarczy dodać/
./QQ
, która w Pythonie byłaby równaQ // Q
1 dla niezerowejQ
.Bez kompresji i niedrukowalnych (55 bajtów):
źródło
JavaScript (ES6),
185177... 171 bajtówSformatowane i skomentowane
Próbny
źródło
Rubin,
181177 bajtówTesty na Ideone .
źródło
Python 2.7,
282248238 bajtówObjaśnienie:
Wypełnij listę
L
elementami[quanity, chip_order, chip_character]
wskazującymi ilość każdego rodzaju żetonów, gdziechip_order
zapewnia sortowanie żetonów o równej ilości w odwrotnej kolejności ( najpierw żetony o wyższej wartości ). Weź żetony zL
rewersu, aby budować ciągi dla każdej linii. Drukuj linie w odwrotnej kolejności, aby uzyskać najmniejsze linie na górze.Dzięki Blue za niektóre ulepszenia.
źródło
for
pętli), możesz po prostu podstawić surową wartość, aby zapisać niektóre bajty. Aby uzyskać więcej wskazówek, sprawdź codegolf.stackexchange.com/questions/54/…input
da ci liczbę całkowitą bez konieczności przeliczania iX[0]>0
można ją skrócić doX[0]
Mathematica, 440 bajtów
Reprezentacja ASCI i właściwa kolejność połykają większość kodu.
* Działa tylko z wersją 11 i wyższą (użycie Nothing) *
źródło
PHP, 274 bajtów
źródło