Le poker a une étiquette dans la façon dont vous organisez vos jetons, souvent appliquée dans les tournois - vos jetons peuvent ne pas être "cachés" à vos adversaires en étant derrière les autres, surtout pour ne pas cacher des jetons de grande dénomination.
Le défi
Nous allons jouer au poker en ASCII, donc nous avons besoin d'écrire une fonction ou d'un programme qui attirera notre arrangement de pile de jetons ASCII compte tenu de sa valeur totale, n
.
Entrée
- Un entier positif, n
(jusqu'à 2**32-1
doit être traité)
Sortie
- Une représentation ASCII de l'arrangement de pile tel que défini ci-dessous.
Cela peut contenir un espace blanc à droite de chaque ligne de sorte qu'aucune ligne ne dépasse un caractère de plus que la longueur utilisée par les caractères imprimables dans la ligne la plus longue (en bas);
Il peut contenir une seule nouvelle ligne de fin; et
Les caractères représentant les puces peuvent être en minuscules si vous préférez.
L'arrangement de pile:
- Contenir le moins de jetons possible, compte tenu des dénominations (voir ci-dessous);
- Aura des puces de valeur égale en "piles" (colonnes);
- Être ordonné de telle sorte que les piles les plus courtes soient à droite des piles plus hautes; et
- Être ordonné de telle sorte que les piles avec des jetons de dénomination plus grande soient à droite des piles de dénominations inférieures de taille égale (ce qui signifie qu'elles sont visibles par nos adversaires à droite)
Les puces elles-mêmes doivent être représentées comme des caractères individuels identifiant leur couleur:
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
Exemple
Pour n = 276,352
le plus petit nombre de puces serait:
2 * 100K + 3 * 25K + 1 * 1K + 3 * 100 + 2 * 25 + 2 * 1
MM CCC P BBB GG WW
Le single P
doit aller à l'extrême droite,
puis les trois piles de taille 2
doivent aller ensuite,
- mais le MM
doit aller le plus à droite, suivi du GG
puis, puis WW
depuis, 100K > 25 > 1
les deux piles de taille 3
vont à gauche,
- mais le CCC
must aller à droite du BBB
depuis25K > 100
Maintenant, nous devons placer ces puces dans des piles réelles, pour faire notre sortie:
BC
BCWGM
BCWGMP
Cas de 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
C'est le code-golf , donc le code le plus court en octets l'emporte. Pas d'échappatoires, yada yada, vous connaissez l'exercice.
2**31-1
, ou avez-vous l'intention d'être plus grand que la plupart desint
types signés ?2**32-1
c'est un cas de test, mais je suis prêt à l'abaisser. (Fait intéressant: PokerStars a une25B
puce dans son dossier d'images.)Réponses:
Pyth,
565552 octetsLe code contient des non imprimables, voici donc un
xxd
hexdump réversible .Essayez-le en ligne. Suite de tests.
1
Conseil de pro: pour jouer au golf à la fin d'un programme acceptant un numéro différent de zéroQ
, ajoutez-le/
./QQ
, qui serait en PythonQ // Q
, est 1 pour différent de zéroQ
.Sans compression et non imprimables (55 octets):
la source
JavaScript (ES6),
185177... 171 octetsFormaté et commenté
Démo
la source
Rubis,
181177 octetsTests sur Ideone .
la source
Python 2.7,
282248238 octetsExplication:
Remplissez la liste
L
avec des éléments[quanity, chip_order, chip_character]
indiquant la quantité de chaque type de puce, ce quichip_order
garantit que les puces de quantité égale sont triées dans l'ordre inverse (les puces de valeur supérieure en premier ). Prenez des jetonsL
à l'envers pour créer des chaînes pour chaque ligne. Imprimez les lignes en sens inverse pour obtenir les plus petites lignes sur le dessus.Merci à Blue pour certaines des améliorations.
la source
for
boucle), vous pouvez simplement remplacer la valeur brute pour enregistrer quelques octets. Pour plus de conseils, consultez codegolf.stackexchange.com/questions/54/…input
vous obtiendra l'entier sans avoir à convertir, etX[0]>0
peut être raccourci àX[0]
Mathematica, 440 octets
La représentation ASCI et l'ordre correct avalent la majeure partie du code.
* Fonctionne uniquement avec la version 11 et supérieure (utilisation de Nothing) *
la source
PHP, 274 octets
la source