Une tirelire est un conteneur utilisé pour collecter des pièces. Pour ce défi, utilisez les quatre pièces américaines: le quart, le dixième de dollar, le nickel et le sou .
Défi
Votre défi est de créer une tirelire électronique. Écrivez un programme (ou une fonction) qui, lorsqu'il est exécuté (ou appelé), génère (ou renvoie) le nombre de chaque pièce que vous avez, ainsi que le montant total des pièces.
Contribution
Une chaîne, un tableau, etc ... (votre choix) des pièces dans votre tirelire (insensible à la casse).
Q - Quarter(Value of 25)
D - Dime(Value of 10)
N - Nickel(Value of 5)
P - Penny(Value of 1)
Production
Le nombre de pièces de l'entrée et le montant total, séparés par le délimiteur non entier de votre choix. (L'ordre dans lequel vous sortez les totaux des pièces n'a pas d'importance, mais la valeur totale des pièces (somme) doit être le dernier élément)
Exemples
Input -> Output
P -> 1,0,0,0,1 or 0,0,0,1,1 or 0,0,1,0,1 or 1,1
N -> 0,1,0,0,5
D -> 0,0,1,0,10
Q -> 0,0,0,1,25
QQQQ -> 0,0,0,4,100
QNDPQNDPQNDP -> 3,3,3,3,123
PPPPPPPPPP -> 10,0,0,0,10
PNNDNNQPDNPQND -> 3,6,3,2,113
Règles
Les échappatoires standard ne sont pas autorisées.
Il s'agit de code-golf , donc le code le plus court en octets pour chaque langue gagne!
Réponses:
Python 2 , 73 octets
-3 octets grâce à @Rod
Essayez-le en ligne!
la source
a*b for a,b in zip(C,[25,10,5,1])
parmap(int.__mul__,C,[25,10,5,1])
pour économiser quelques octetsPython 2 , 63 octets
Essayez-le en ligne!
Python 2 , 63 octets
Essayez-le en ligne!
la source
APL (Dyalog Unicode) ,
2827 octetsEssayez-le en ligne!
Fonction tacite. Prend l'entrée en tant que vecteur au format
,'<input>'
.Merci à ngn pour un octet!
Comment?
la source
1⊥∘.=∘'PNDQ'
->'PNDQ'+.=¨⊂
R ,
7069 octetsEssayez-le en ligne!
Prend la saisie comme vecteur de caractères individuels. Les convertit en
factors
ettabulate
les s, calcule ensuite les valeurs avec un produit scalaire.Pour faciliter les tests, j'ai ajouté un moyen de convertir les cas de test ci-dessus en entrée attendue par la fonction.
Cela bat à peine le stockage des noms de pièces en tant que vecteur
names
, ce qui signifie que l'approche ci-dessous serait probablement plus golfique si nous avions plus de types de pièces:R ,
7170 octetsEssayez-le en ligne!
la source
Gelée , 19 octets
Essayez-le en ligne!
Comment ça fonctionne
la source
JavaScript (ES6),
6361 octetsSauvegardé 2 octets grâce à Shaggy
Prend l'entrée comme un tableau de caractères. Sorties
P,N,D,Q,total
.Inspiré par la réponse Python des ovs .
Essayez-le en ligne!
Réponse originale, 73 octets
Prend l'entrée comme un tableau de caractères. Sorties
Q,D,N,P,total
.Essayez-le en ligne!
la source
MATL ,
2220 octetsEssayez-le en ligne! Ou vérifiez tous les cas de test .
Explication avec exemple
Considérez la saisie
'PNNDNNQPDNPQND'
comme exemple. Le contenu de la pile est affiché à l'envers, c'est-à-dire que l'élément supérieur apparaît ci-dessous.la source
!'PNDQ'=Xst[l5X25]!Y*
est de 21 octets. bien que j'avoue que je ne l'ai pas testé.Japt ,
2522 octetsEnregistré 3 octets grâce à @Shaggy
Testez-le en ligne! Prend l'entrée en minuscules
Explication
la source
Excel (version en langue polonaise), 150 octets
L'entrée est en A1. Les formules sont dans les cellules
B1
-F1
:résultant en sortie du nombre de quartiers, dimes, nickels, pennys et la somme dans les cellules
B1
,C1
,D1
,E1
et ,F1
respectivement.Version en langue anglaise (162 octets):
la source
APL + WIN,
3327 octets5 octets enregistrés grâce à Adam
Invite à saisir à l'écran la chaîne de pièces.
la source
n,+/1 5 10 25×n←+⌿⎕∘.='PNDQ'
05AB1E ,
3026222119 octetsEssayez-le en ligne!
Déverser:
Sortie imprimée:
Parce que quelque chose a été imprimé, la pile de fin est ignorée.
la source
J , 29 octets
Essayez-le en ligne!
Explication:
'PNDQ'=/]
crée une table d'égalité1#.
trouve la somme de chaque ligne du tableau, donc le nombre d'occurrences de chaque valeur1#.*
trouve le produit scalaire de son argument gauche et droit],
ajoute le produit scalaire à la liste de valeursla source
C # (.NET Core) ,
163136octetsMerci à @raznagul pour y avoir sauvé beaucoup d'octets!
Essayez-le en ligne!
Ancienne version:
Essayez-le en ligne!
la source
n.Count
place den.Length
. Comme cela a été entièrement supprimé, vous pouvez l'utiliserstring
maintenant.Perl 5
-pF
, 59 octetsEssayez-le en ligne!
la source
Rubis , 66 octets
Essayez-le en ligne!
Pas génial.
la source
05AB1E , 19 octets
Essayez-le en ligne!
Explication
la source
Java (OpenJDK 8) , 148 octets
Essayez-le en ligne!
Eh bien, c'est seulement un octet plus court que l' autre soumission Java, mais bon - plus court est plus court: D
Explication:
la source
Gol> <> , 47 octets
Essayez-le en ligne!
Le format de sortie est
[P Q N D Value]
.Comment ça fonctionne
la source
Perl 5
-p
, 47 octetsEssayez-le en ligne!
la source
Pyth,
232726 octetsUn octet enregistré grâce à @RK. Sorties comme [P, N, D, Q, valeur].
Essayez-le ici
Explication
la source
+Jm/Qd"PNDQ"s.b*NYJ[h05T25
C (clang) , 112 octets
Essayez-le en ligne!
La sortie seq est maintenant de P, Q, D, N, valeur totale
Fonctionne avec les entrées en minuscules et en majuscules.
Explication:
"AYJE"
ou{64+1,64+25,64+10,64+5}
est. 64 + valeur de la pièce.d=(c|c/2)&3
(utilisé comme indice) a une valeur1,2,3,0
pour lesq,d,n,p
entrées respectivement, en majuscule et en minuscule.la source
C # (.NET Core) , 156 octets
la source
Java (OpenJDK 8) , 149 octets
Essayez-le en ligne!
la source
Rétine , 50 octets
Essayez-le en ligne! Sorties dans l'ordre D, N, P, Q, total. Explication:
Calculez le total en insérant
_
s correspondant à la valeur de chaque pièce.Insérez une copie supplémentaire de chaque caractère pour qu'il y en ait au moins un de chaque correspondant.
Triez les caractères dans l'ordre.
Comptez le nombre de chaque caractère après le premier.
la source
SmileBASIC, 70 octets
Exemple:
Explication:
la source
C, 149 octets
Essayez-le en ligne!
C n'a pas de tableaux associatifs, donc je le simule (très inefficacement, en termes de mémoire!), Puis je boucle à nouveau avec un tableau de recherche pour additionner les pièces. Il ne calculera pas les devises étrangères, cependant :-)
la source