Una alcancía es un contenedor que se usa para recoger monedas. Para este desafío, usa las cuatro monedas de EE. UU .: cuarto, diez centavos, cinco centavos y cinco centavos .
Desafío
Su desafío es crear una alcancía electrónica. Escriba un programa (o función) que, cuando se ejecuta (o se llama), genera (o devuelve) el recuento de cada moneda que tiene, así como la cantidad total de las monedas.
Entrada
Una cadena, matriz, etc. (su elección) de las monedas en su alcancía (no distingue entre mayúsculas y minúsculas).
Q - Quarter(Value of 25)
D - Dime(Value of 10)
N - Nickel(Value of 5)
P - Penny(Value of 1)
Salida
El recuento de monedas de la entrada y la cantidad total, separadas por el delimitador no entero de su elección. (El orden en el que genera los totales de monedas no importa, pero el valor total de la moneda (suma) debe ser el último elemento)
Ejemplos
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
Reglas
Las lagunas estándar no están permitidas.
Este es el código de golf , por lo que gana el código más corto en bytes para cada idioma.
Respuestas:
Python 2 , 73 bytes
-3 bytes gracias a @Rod
Pruébalo en línea!
fuente
a*b for a,b in zip(C,[25,10,5,1])
conmap(int.__mul__,C,[25,10,5,1])
para guardar algunos bytesPython 2 , 63 bytes
Pruébalo en línea!
Python 2 , 63 bytes
Pruébalo en línea!
fuente
APL (Dyalog Unicode) ,
2827 bytesPruébalo en línea!
Función tácita. Toma la entrada como un vector en el formato
,'<input>'
.Gracias a ngn por un byte!
¿Cómo?
fuente
1⊥∘.=∘'PNDQ'
->'PNDQ'+.=¨⊂
R ,
7069 bytesPruébalo en línea!
Toma la entrada como un vector de caracteres individuales. Los convierte
factors
ytabulate
los envía, y luego calcula los valores con un producto de puntos.Para facilitar la prueba, he agregado una forma de convertir los casos de prueba anteriores a la entrada que la función espera.
Esto apenas supera el almacenamiento de los nombres de las monedas como vectores
names
, lo que significa que el siguiente enfoque probablemente sería más golfista si tuviéramos más tipos de monedas:R ,
7170 bytesPruébalo en línea!
fuente
Jalea , 19 bytes
Pruébalo en línea!
Cómo funciona
fuente
JavaScript (ES6),
6361 bytesGuardado 2 bytes gracias a Shaggy
Toma entrada como una matriz de caracteres. Salidas
P,N,D,Q,total
.Inspirado por la respuesta Python de ovs .
Pruébalo en línea!
Respuesta original, 73 bytes
Toma entrada como una matriz de caracteres. Salidas
Q,D,N,P,total
.Pruébalo en línea!
fuente
MATL ,
2220 bytesPruébalo en línea! O verificar todos los casos de prueba .
Explicación con ejemplo
Considere la entrada
'PNNDNNQPDNPQND'
como un ejemplo. El contenido de la pila se muestra al revés, es decir, el elemento superior aparece debajo.fuente
!'PNDQ'=Xst[l5X25]!Y*
es de 21 bytes. aunque admito que no lo he probado.Japt ,
2522 bytesGuardado 3 bytes gracias a @Shaggy
¡Pruébalo en línea! Toma entrada en minúsculas
Explicación
fuente
Excel (versión en idioma polaco), 150 bytes
La entrada está en A1. Las fórmulas están en celdas
B1
-F1
:resultante de la producción de número de cuartos, monedas de diez centavos, monedas de cinco centavos, pennys y la suma en las células
B1
,C1
,D1
,E1
yF1
respectivamente.Versión en inglés (162 bytes):
fuente
APL + WIN,
3327 bytes5 bytes guardados gracias a Adam
Solicita la entrada en pantalla de la cadena de monedas.
fuente
n,+/1 5 10 25×n←+⌿⎕∘.='PNDQ'
05AB1E ,
3026222119 bytesPruébalo en línea!
Tugurio:
Salida impresa:
Como se imprimió algo, se ignora la pila final.
fuente
J , 29 bytes
Pruébalo en línea!
Explicación:
'PNDQ'=/]
crea una tabla de igualdad1#.
encuentra la suma de cada fila de la tabla, por lo tanto, el número de ocurrencias de cada valor1#.*
encuentra el producto punto de su argumento izquierdo y derecho],
agrega el producto punto a la lista de valoresfuente
C # (.NET Core) ,
163136 bytes¡Gracias a @raznagul por guardar muchos bytes allí!
Pruébalo en línea!
Versión antigua:
Pruébalo en línea!
fuente
n.Count
lugar den.Length
. Como eso se eliminó por completo, puede usarlostring
ahora.Perl 5
-pF
, 59 bytesPruébalo en línea!
fuente
Ruby , 66 bytes
Pruébalo en línea!
No es bueno.
fuente
05AB1E , 19 bytes
Pruébalo en línea!
Explicación
fuente
Java (OpenJDK 8) , 148 bytes
Pruébalo en línea!
Bueno, es solo un byte más corto que el otro envío de Java, pero bueno, más corto es más corto: D
Explicación:
fuente
Gol> <> , 47 bytes
Pruébalo en línea!
El formato de salida es
[P Q N D Value]
.Cómo funciona
fuente
Perl 5
-p
, 47 bytesPruébalo en línea!
fuente
Pyth,
232726 bytesGuardado un byte gracias a @RK. Salidas como [P, N, D, Q, valor].
Pruébalo aquí
Explicación
fuente
+Jm/Qd"PNDQ"s.b*NYJ[h05T25
C (clang) , 112 bytes
Pruébalo en línea!
La secuencia de salida ahora es P, Q, D, N, valor total
Funciona con entradas en minúsculas y mayúsculas.
Explicación:
"AYJE"
o{64+1,64+25,64+10,64+5}
es 64 + valor de la moneda.d=(c|c/2)&3
(utilizado como índice) tiene valor1,2,3,0
para lasq,d,n,p
entradas respectivamente, tanto en mayúsculas como en minúsculas.fuente
C # (.NET Core) , 156 bytes
fuente
Java (OpenJDK 8) , 149 bytes
Pruébalo en línea!
fuente
Retina , 50 bytes
Pruébalo en línea! Salidas en el orden D, N, P, Q, total. Explicación:
Calcule el total insertando
_
s correspondiente al valor de cada moneda.Inserte una copia adicional de cada personaje para que haya al menos uno de cada uno que coincida.
Ordena los personajes en orden.
Cuente el número de cada personaje después del primero.
fuente
SmileBASIC, 70 bytes
Ejemplo:
Explicación:
fuente
C, 149 bytes
Pruébalo en línea!
C no tiene matrices asociativas, así que lo falsifico (¡muy ineficientemente, en cuanto a memoria!) Y luego vuelvo a recorrerlo con una matriz de búsqueda para sumar las monedas. Sin embargo, no calculará moneda extranjera :-)
fuente