Je sais, le titre te fait craquer
Étant donné la quantité d'argent produite, le moins de pièces constitue ce montant
Exemples
0.1
1 dime
0.01
1 penny
0.28
1 quarter 3 penny
0.56
2 quarter 1 nickel 1 penny
1.43
5 quarter 1 dime 1 nickel 3 penny
Spec
- 100 cents dans un dollar.
- Les valeurs de chaque type de pièce sont:
penny
1 centnickel
5 centsdime
10 centimesquarter
25 cents
Les éléments intégrés qui banalisent cette tâche ne sont pas autorisés.
E / S
L'entrée est une décimale représentant la valeur en dollars du total
- Pas besoin de pluraliser
- Commande:
quarter
->penny
- La sortie doit être
<#_of_coins> <coin type>
- Séparateurs:
,
ou,
ou
Le seul espace de fin autorisé est un saut de ligne / espace unique.
S'il n'y a aucun type de pièce, ce type de pièce ne doit pas être affiché . Par exemple 0.25
-> 1 quarter
pas 1 quarter 0 dime 0 nickel 0 penny
1.43
, qui est supérieur à1
(less than 1)
partie ne devrait pas être là. J'ai oublié de retirer cela dans le bac à sable, je suppose2 quarter(2 spaces)1 nickel 1 penny
?13.00
peut être une entrée possible mais l'entrée ne le sera jamais13
. J'aurai toujours une décimaleRéponses:
CJam, 60
Ce script semble avoir beaucoup de place à amélioration, mais il est plus court que tout jusqu'à présent. Cela utilise la commande intégrée "md" qui retourne à la fois le résultat entier d'une division et le reste. Il fait ce qui suit:
Essayez-le ici
versions antérieures:
la source
JavaScript ES6, 107 octets
Mathématiques simples.
la source
|0
aprèsn%5
?Python 2, 120 octets
Juste pour être sûr, changé en quelque chose qui fonctionne définitivement pour corriger le commentaire de @ Ogaday, pour le moment du moins. Je ne sais pas si j'en ai aussi besoin
int()
, mais j'ai du mal à me convaincre que non.est un octet supplémentaire désactivé, mais affiche un extra
L
pour les entrées de grande taille (bien que ce code ne fonctionne pas de toute façon pour les entrées extrêmement grandes, en raison de la précision du flottant).la source
a=40/a+5^12
[x^k for x in [10, 5, 1]]
et[k/y for y in [25, 10, 5]]
pour différentsk
, puis j'ai vu que deux listes étaient décalées de 5. Probablement sous-optimales, mais je n'ai pas eu le temps de forcer brutalement.10.03
et10.04
. Cela a à voir avec la représentation de Python des flottants et comment il les arrondit en pouces. Essayez"print %d"%(10.03*100)
.n=int(''.join(raw_input().split(".")))
peut fonctionner, mais c'est assez verbeux.dc, 104
Ajout de nouvelles lignes pour la "lisibilité" :
la source
Rétine , 97
Merci (comme toujours) à @randomra - enregistré 1 octet.
Suppose que l'entrée se fait sous la forme
xxx.yy
ouxxx.y
.Essayez-le en ligne.
la source
$&
est la même que$0
pour que vous puissiez enregistrer un octet$0.0
par$&0
.Vitsy,
11010097 bytesOuais, attendez, je suis encore en train de méthodiser ça.
Explication en mode verbeux à venir:
Essayez-le en ligne!
la source
retrauq
semble presque un mot ...Java 8 lambda, 165 octets
Attend l'entrée
y
comme double ou flottante.Tellement ternaire. ; -;
la source
;-;
Qu'est-ce que c'est? C'est un wampa?JavaScript ES6,
202200 octetsJ'espère que cela peut être joué au golf ...
Code non golfé:
la source
LabVIEW, 62 primitives LabVIEW
J'ai créé 2 tableaux pour les noms et les valeurs et parcourez-les par le haut (tableau d'index avec i) en utilisant un opérateur modulo (la chose R IQ). Les pièces restantes sont passées dans le registre à décalage.
Si la valeur est supérieure à 0, je convertis le nombre en chaîne et concatène la chaîne transmise, le nombre et le nom de la pièce et la remets dans le registre à décalage.
Ijus a réalisé que mon gif ne montre pas le faux étui mais il n'y a rien à voir de toute façon, il passe juste à travers la chaîne qui est entrée.
la source
Japt, 77 octets
Heureusement, les quatre noms de pièces sont compressables. Le
¿
devrait être l'octet littéral 0x81. Testez-le en ligne!la source
73 quarter 1 nickel 2 penny
. 73 * .25 + 1 * .05 + 2 * .01 = 18,32 au lieu de 18,33.C,
147144142140 140 octetsNon golfé avec des tests:
la source
char*[]
parchar**
,int a[]
avecint*a
et mettez lam%=a[i++]
dans la dernière partie de la boucle for. Devrait économiser 4 octets. Je ne l'ai pas encore testé, alors essayez chacun d'eux.m%=a[i++]
morceau, merci.if(m/a[i])
parm/a[i]&&
pour économiser 2 octets supplémentaires."quarter\0dime\0nickel\0penny"
dans le printf. Chaque \ 0 termine la chaîne, économisant 1 caractère chacun\0
provoque le plantage du programme. Je ne sais pas comment l'itération est censée fonctionner sur une telle chaîne de toute façon.MATL , 82
106107Essayez-le sur MATL Online!
la source
JavaScript,
156145144 octetsAucune correspondance avec la réponse de la formule d'ETHproduction, mais de toute façon ...
C'est l'une de mes premières rondes de golf, donc toutes les améliorations sont très appréciées! J'ai déjà volé le "xor trunc" d'ETH - désolé, c'était trop intelligent :-)
Plus lisible:
Remarque: Lors du test réalisé que je JavaScript (? Au moins sur ma machine) Divise
1.13 / 0.01
à1.12999...
, faire mes (et probablement tous les autres soumissions de JS) fonctionne pas correctement ... 100%la source
Perl 5 -
128124 octetsJe suppose que cela peut être réécrit pour être beaucoup plus court mais je ne peux vraiment pas le voir.
EDIT: Juste une astuce mathématique pour enregistrer 4 caractères.
la source
Perl 6 , 96 octets
Usage:
la source
Python 2,
167161 octetsMise à jour 1: l'idée de Stole Sp3000 d'utiliser input () et de faire de mon code un script au lieu d'une fonction.
la source
C, 162 octets
Malheureusement, ne fonctionne pas sans
#include
.Non golfé
la source
Lua 5.3,
141139132131 131 octetsEn quelque sorte basé sur la réponse Python de Sp3000, mais avec ma propre formule magique.
Modifier - amélioré la
a
formule. Auparavant, c'étaita=a*3%13~#s%4
.Edit 2 - auparavant, j'utilisais
math.ceil
pour arrondir et convertir en entier. Maintenant je réutilise//
pour arrondir et ajouter~~
pour convertir en entier.Edit 3 - rasé un personnage en changeant le motif de
"%w+ "
à".- "
.la source
K (oK) ,
9578 octetsSolution:
Essayez-le en ligne!
Exemple:
Explication:
Modulez l'entrée par chaque pièce, puis divisez les pièces par le résultat.
Alimentez chaque résultat avec le nom de la pièce dans une fonction, en retournant la valeur de chaîne des deux si le nombre de pièces n'est pas nul.
Aplatissez tout et joignez-vous aux espaces.
la source
Kotlin , 147 octets
Embellie
Tester
TIO
TryItOnline
la source