Gringotts no es solo una bóveda, sino que una institución financiera y magos acreditados también necesitan préstamos. Como no quieres que los duendes de Gringotts te fastidien, decidiste que sería una buena idea escribir un programa para calcular el interés. El interés se agrava solo anualmente.
Su tarea es calcular el monto total adeudado después del interés dado el principal, la tasa de interés y el tiempo (años completos), operando en denominaciones completas de dinero de magos, redondeando al Knut entero más cercano. Hay 29 Knuts de bronce en una hoz plateada y 17 hoces en un galeón de oro.
Ejemplo
Loan taken out:
23 Knuts
16 Sickles
103 Galleons
@ 7.250%
For 3 years
Total owed after interest:
24 Knuts
4 Sickles
128 Galleons
Notas y reglas
- La entrada y salida pueden estar en cualquier formato conveniente. Debe tomar Knuts, Hoces, Galeones, tasa de interés y tiempo. Todos menos la tasa de interés serán números enteros. La tasa de interés es en incrementos de 0.125%.
- No se garantiza que el dinero de entrada sea canónico (es decir, puede tener 29 o más Knuts y 17 o más Hoces).
- La salida debe ser la representación canónica. (es decir, menos de 29 Knuts y menos de 17 Hoces)
- Los totales adeudados, hasta 1,000 galeones, deben tener una precisión de 1 Knut por año de interés en comparación con los cálculos de precisión arbitrarios.
- Puede redondear después de cada año de interés o solo al final. Los cálculos de referencia pueden tener esto en cuenta para las comprobaciones de precisión.
¡Feliz golf!
0.0725
lugar de7.25
)rounding down
Respuestas:
R ,
7062 bytesPruébalo en línea!
Toma entrada como d: depósito en knuts, hoces, galeones; i: tasa de interés como decimal; y: años. Salidas de depósito final en knuts, hoces, galeones. Gracias a @Giuseppe por usar la multiplicación de matrices para guardar algunos bytes (y señalar cómo evitar la necesidad de ajustar en 1e99).
fuente
%%
función, que es mod. Idealmente, me gustaría dejar los galeones solos, pero tomar un número infinito de mod devuelve NaN, por lo que acabo de usar un número realmente grande (pero uno que es pequeño en bytes). Las alternativas que se me ocurren son más largas (p. Ej., [ Tio.run/##JYrLCsIwEEV/… ¡ Pruébelo en línea!])9e99
... Además, puedes jugar golf hasta 63 bytesPython 3.8 (prelanzamiento) ,
757471 bytes-1 bytes gracias a @EmbodimentofIgnorance
-3 bytes gracias a @xnor
Esto toma Knuts, Sickles y Galleons como ints, el interés como flotante (decimal, no porcentaje) y los años como int. Devuelve una tupla que contiene el número después del interés de Knuts, Sickles y Galleons, respectivamente.
Uso:
Pruébalo en línea!
fuente
operating in whole denominations of wizard money, rounding down
. Supuserounding down
quechop off everything after the decimal point.
usar el encabezado definitivamente parece una forma más fácil de hacer las cosas. Lo haré para futuras publicaciones, graciasI\=
el encabezado de esta manera . Además, parece quek//29//17
puede serk//493
.APL + WIN,
37 2826 bytes2 bytes guardados gracias a lirtosiast
Pruébalo en línea! Cortesía de Dyalog Classic.
Explicación:
fuente
⌊a⊤(⎕⊥⍨a←0 17 29)×⎕*⍨1+⎕
por 24?Perl 6 , 47 bytes
Pruébalo en línea!
Me sorprende que logré poner esto en un anonimato ¡Lo que sea lambda! Especialmente la parte donde es más
*
s que otra cosa. Toma datos comointerest rate (e.g. 0.0725), years, [Knuts, Sickles, Galleons]
y devuelve una lista de monedas en el mismo orden.Explicación:
fuente
*
s pero más bytes). El resto de los*
s son de multiplicación (*
) y exponenciales (**
)Jalea , 29 bytes
Un programa completo de aceptar argumentos:
rate
;[Galleons, Sickles, Knuts]
;years
.Impresiones
[Galleons, Sickles, Knuts]
.Pruébalo en línea!
Pisos al final de todo el plazo.
÷ȷ2
puede eliminarse si aceptamos la tasa como una razón en lugar de un porcentaje.¿Cómo?
fuente
Ensamblaje Intel 8087 FPU, 86 bytes
Desmontado y documentado:
Implementado como un MACRO (básicamente una función), este es un código de máquina no específico del sistema operativo que usa solo el coprocesador Intel 80x87 FPU / matemático para el cálculo.
Ejemplo de programa de prueba con salida:
Salida
fuente
Japt, 48 bytes
¡Mi primer intento en Japt, buscando la recompensa de @ Shaggy! No hace falta decir que esto no es muy golfoso :(
Pruébalo en línea!
fuente
Haskell , 73 bytes
Pruébalo en línea!
Gracias a @Laikoni por dos bytes.
Los trucos sucios: el número de monedas en la entrada es de coma flotante (
Double
), mientras que el número de monedas en la salida es integral (Integer
). El resultado es un par anidado((Galleons, Sickles), Knotts)
para evitar tener que aplanar a un triple.Explicación
fuente
(truncate$ ... )
->truncate( ... )
y en(g#s)k r n
lugar dec g s k r n
.Stax , 24 bytes
Ejecutar y depurarlo
La entrada es valores separados por espacios.
interest years knuts sickles galleons
La salida está separada por una nueva línea.
fuente
TI-BASIC (TI-84),
9690 bytesLa entrada es
Ans
una lista con 5 elementos: Knuts, Hoces, Galeones, Interés (decimal) y Tiempo (años).La salida está entrante
Ans
y se imprime automáticamente cuando se completa el programa.Sin golf:
Ejemplo:
Explicación:
Se
∟C
crea una nueva lista, yAns
se almacena en ella.Los Knuts, Hoces y Galeones se convierten en Knuts y se almacenan en
T
.Toma la cantidad de Knuts y le aplica un interés compuesto.
El interés se calcula aquí.
Almacena el que nteger parte de
T
módulo 493 enR
. Se usa para acortar el recuento de bytes.Evalúa una lista con 3 elementos (Knuts, Sickles y Galleons). La lista se almacena automáticamente en
Ans
.Nota: El recuento de bytes se evalúa tomando el recuento de bytes dado en [MEM] → [2] → [7] (lista de programas en RAM) y restando la cantidad de caracteres en el nombre del programa y 8 bytes adicionales utilizados para el programa:
103-5-8 = 90 bytes
fuente
K, 46 bytes
c
almacenar la lista para conversión de baset
es la función que calcula la cantidad totalUse ejemplo:
escribe
(128;4;24.29209)
Explicación:
c/:x
transforma la lista (galeón; hoz; knuts) en kuts1+y%100
calcular la tasa de interés (ejemplo 1.0725 para tasa de 7.25%)lambda
{z(y*)\x}
hace el trabajo: itera 3 veces, aplica interes * main y devuelve main principal.c\:
genera galeón, hoces, knuts de knutsNOTA.- si no necesita una función de nombres, podemos usar una lambda, ahorrando 2 bytes
{c\:{z(y*)/x}[c/:x;1+y%100;z]}inputArgs
fuente
C # (compilador interactivo de Visual C #) , 86 bytes
Se presenta como una tupla nombrada con 3 valores que representan knuts, hoces y galeones, y la tasa de interés como doble (no como porcentaje). Realmente desearía que C # tuviera un operador de exponenciación. Math.Pow es demasiado largo :(
Pruébalo en línea!
fuente
Lote, 171 bytes
Toma datos como argumentos de la línea de comandos en el orden Galleones, Hoces, Knuts, interés, años. El interés es un porcentaje pero se expresa sin el signo%. Trunca después de cada año. La salida está en el orden de Galeones, Hoces, Knuts. Admite al menos 5000 galeones. Explicación:
El lote solo tiene aritmética de enteros. Afortunadamente, la tasa de interés es siempre un múltiplo de
0.125
. Comenzamos dividiendo en el punto decimal, de modo que sei
convierte en la parte entera de la tasa de interés yf
la fracción decimal. Estos se multiplican por 8. El primer dígito def
ahora es el número de octavos en la tasa de interés porcentual.Esto luego se extrae mediante el corte de cadenas y se agrega para dar una tasa de interés en 1/800. El número de Knuts también se calcula.
Calcule y agregue el interés de cada año.
Convertir de nuevo a galeones y hoces.
fuente
05AB1E (heredado) , 24 bytes
Puerto de la respuesta de Perl 6 de @JoKing , así que asegúrate de votarlo también si te gusta esta respuesta.
Estoy usando la versión heredada debido a un error en la nueva versión donde
£
no funciona en enteros, por lo que un reparto explícito en cadena§
(entre el segundo•
y3
se requiere ) (hasta que se solucione el error).Toma el interés como decimal, seguido del año, seguido de la lista de [Knuts, Sickles, Galleons].
Pruébalo en línea.
Explicación:
Ver este consejo 05AB1E mío (sección Cómo comprimir grandes números enteros? ) Para entender por qué
•1ýÑ•
es119493
.fuente
APL (NARS), 37 caracteres, 74 bytes
traducción de la muy buena y muy pequeña solución APL de bytes por parte del usuario de Graham a una solución que usa una función en lugar de una entrada estándar ... prueba y cómo usarla:
(No digo que haya entendido el algoritmo)
fuente
Perl 5 , 70 bytes
Pruébalo en línea!
fuente