Gringotts n'est pas seulement un coffre-fort, mais une institution financière réputée et des sorciers ont également besoin de prêts. Puisque vous ne voulez pas être foutu par les gobelins Gringotts, vous avez décidé que ce serait une bonne idée d'écrire un programme pour calculer l'intérêt. L'intérêt n'est composé que chaque année.
Votre tâche consiste à calculer le montant total dû après intérêts compte tenu du principal, du taux d'intérêt et du temps (années entières), fonctionnant en dénominations entières d'argent sorcier, arrondi au Knut entier le plus proche. Il y a 29 boutons de bronze dans une faucille d'argent et 17 faucilles dans un galion d'or.
Exemple
Loan taken out:
23 Knuts
16 Sickles
103 Galleons
@ 7.250%
For 3 years
Total owed after interest:
24 Knuts
4 Sickles
128 Galleons
Notes et règles
- L'entrée et la sortie peuvent être dans n'importe quel format pratique. Vous devez prendre Knuts, Faucilles, Galions, taux d'intérêt et temps. Tous, sauf le taux d'intérêt, seront des nombres entiers. Le taux d'intérêt est par incréments de 0,125%.
- L'argent d'entrée n'est pas garanti d'être canonique (c'est-à-dire que vous pouvez avoir 29 Knuts ou plus et 17 Sickles ou plus.)
- La sortie doit être la représentation canonique. (c'est-à-dire moins de 29 nœuds et moins de 17 faucilles)
- Les totaux dus, jusqu'à 1 000 gallions, devraient être précis à moins de 1 knut par an d'intérêt par rapport aux calculs de précision arbitraires.
- Vous pouvez arrondir après chaque année d'intérêt ou seulement à la fin. Les calculs de référence peuvent en tenir compte pour les contrôles de précision.
Bon golf!
0.0725
au lieu de7.25
)rounding down
Réponses:
R ,
7062 octetsEssayez-le en ligne!
Prend l'entrée comme d: dépôt dans les knuts, faucilles, galions; i: taux d'intérêt sous forme décimale; y: années. Produit le dépôt final dans les nœuds, les faucilles, les galions. Merci à @Giuseppe pour avoir utilisé la multiplication matricielle pour économiser quelques octets (et indiqué comment éviter d'avoir à boucler à 1e99).
la source
%%
fonction, qui est mod. Idéalement, je voudrais laisser les galions seuls, mais en prenant un nombre infini mod retourne NaN, et donc je viens d'utiliser un très grand nombre (mais un qui est petit en octets). Les alternatives que j'ai trouvées sont plus longues (par exemple [ tio.run/##JYrLCsIwEEV/… Essayez-le en ligne!])9e99
aussi bien ... En outre, vous pouvez jouer au golf jusqu'à 63 octetsPython 3.8 (pré-version) ,
757471 octets-1 octets grâce à @EmbodimentofIgnorance
-3 octets grâce à @xnor
Cela prend Knuts, Faucilles et Galions comme des entiers, l'intérêt comme un flottant (décimal, pas un pourcentage) et des années comme un int. Il renvoie un tuple contenant le nombre après intérêt de Knuts, Sickles et Galleons, respectivement.
Usage:
Essayez-le en ligne!
la source
operating in whole denominations of wizard money, rounding down
. J'ai comprisrounding down
que l'chop off everything after the decimal point.
utilisation de l'en-tête semble définitivement être une manière plus simple de faire les choses. Je le ferai pour les prochains articles, merciI\=
dans l'en-tête comme ceci . En outre, il semble que cek//29//17
soit possiblek//493
.APL + WIN,
37 2826 octets2 octets économisés grâce au lirtosiast
Essayez-le en ligne! Gracieuseté de Dyalog Classic
Explication:
la source
⌊a⊤(⎕⊥⍨a←0 17 29)×⎕*⍨1+⎕
pour 24?Perl 6 , 47 octets
Essayez-le en ligne!
Je suis surpris d'avoir réussi à mettre cela dans un lambda anonyme! Surtout la partie où c'est plus
*
qu'autre chose. Prend l'entrée commeinterest rate (e.g. 0.0725), years, [Knuts, Sickles, Galleons]
et renvoie une liste de devises dans le même ordre.Explication:
la source
*
s mais plus d'octets). Le reste des*
s provient de la multiplication (*
) et des exponentielles (**
)Gelée , 29 octets
Un programme complet acceptant arguments:
rate
;[Galleons, Sickles, Knuts]
;years
.Impressions
[Galleons, Sickles, Knuts]
.Essayez-le en ligne!
Planchers à la fin de toute la durée.
÷ȷ2
peut être supprimé si nous acceptons le taux sous forme de rapport plutôt que de pourcentage.Comment?
la source
Ensemble Intel 8087 FPU, 86 octets
Non assemblé et documenté:
Mis en œuvre en tant que MACRO (essentiellement une fonction), il s'agit d'un code machine non spécifique au système d'exploitation utilisant uniquement le coprocesseur Intel 80x87 FPU / math pour le calcul.
Exemple de programme de test avec sortie:
Production
la source
Japt, 48 octets
Mon premier essai chez Japt, pour la prime de @ Shaggy! Inutile de dire que ce n'est pas très golfique :(
Essayez-le en ligne!
la source
Haskell , 73 octets
Essayez-le en ligne!
Merci à @Laikoni pour deux octets.
Les sales trucs: le nombre de pièces en entrée est en virgule flottante (
Double
), tandis que le nombre de pièces en sortie est intégral (Integer
). Le résultat est une paire imbriquée((Galleons, Sickles), Knotts)
pour éviter d'avoir à s'aplatir en triple.Explication
la source
(truncate$ ... )
->truncate( ... )
et(g#s)k r n
au lieu dec g s k r n
.Stax , 24 octets
Exécuter et déboguer
L'entrée est des valeurs séparées par des espaces.
interest years knuts sickles galleons
La sortie est séparée par des retours à la ligne.
la source
TI-BASIC (TI-84),
9690 octetsL'entrée est
Ans
une liste de 5 éléments: Knuts, Faucilles, Galions, Intérêt (décimal) et Temps (années).La sortie est en
Ans
entrée et est automatiquement imprimée à la fin du programme.Non golfé:
Exemple:
Explication:
Une nouvelle liste,,
∟C
est créée et yAns
est stockée.Les Knuts, Faucilles et Galions sont convertis en Knuts et stockés dans
T
.Prend le montant de Knuts et lui applique des intérêts composés.
L'intérêt est calculé ici.
Stocke la I nteger partie de
T
modulo 493 enR
. Utilisé pour raccourcir le nombre d'octets.Évalue une liste avec 3 éléments (Knuts, Faucilles et Galions). La liste est automatiquement stockée dans
Ans
.Remarque: le nombre d'octets est évalué en prenant le nombre d'octets donné dans [MEM] → [2] → [7] (liste des programmes dans la RAM) et en soustrayant la quantité de caractères dans le nom du programme et 8 octets supplémentaires utilisés pour le programme:
103 - 5 - 8 = 90 octets
la source
K, 46 octets
c
stocker la liste pour la conversion de baset
est la fonction qui calcule le montant totalExemple d'utilisation:
écrit
(128;4;24.29209)
Explication:
c/:x
transformer la liste (galion; faucille; knuts) en kuts1+y%100
calculer le taux d'intérêt (exemple 1,0725 pour un taux de 7,25%)lambda
{z(y*)\x}
fait le travail: itérer 3 fois, en appliquant interes * main principale, et retourne la main finale.c\:
génère galion, faucilles, knuts à partir de knutsNOTE.- si vous n'avez pas besoin d'une fonction de noms, nous pouvons utiliser un lambda, économisant 2 octets
{c\:{z(y*)/x}[c/:x;1+y%100;z]}inputArgs
la source
C # (Visual C # Interactive Compiler) , 86 octets
Prend inout comme un tuple nommé avec 3 valeurs représentant les knuts, faucilles et galions, et le taux d'intérêt en double (pas un pourcentage). Je souhaite vraiment que C # ait un opérateur d'exponentation. Math.Pow est beaucoup trop long :(
Essayez-le en ligne!
la source
Lot, 171 octets
Prend les entrées sous forme d'arguments de ligne de commande dans l'ordre Galions, Faucilles, Noeuds, intérêt, années. L'intérêt est un pourcentage mais exprimé sans le signe%. Tronque après chaque année. La sortie est dans l'ordre Galions, Faucilles, Noeuds. Prend en charge au moins 5000 gallions. Explication:
Le lot n'a qu'une arithmétique entière. Heureusement, le taux d'intérêt est toujours un multiple de
0.125
. Nous commençons par diviser sur la virgule décimale, de sorte que celai
devient la partie entière du taux d'intérêt etf
la fraction décimale. Ceux-ci sont ensuite multipliés par 8. Le premier chiffre def
est maintenant le nombre de huitièmes du taux d'intérêt en pourcentage.Celui-ci est ensuite extrait en utilisant le tranchage de chaîne et ajouté pour donner un taux d'intérêt au 1 / 800ème. Le nombre de Knuts est également calculé.
Calculez et ajoutez l'intérêt de chaque année.
Reconvertissez en galions et faucilles.
la source
05AB1E (hérité) , 24 octets
Port de la réponse Perl 6 de @JoKing , alors assurez-vous de lui aussi voter positivement si vous aimez cette réponse!
J'utilise la version héritée en raison d'un bogue dans la nouvelle version où
£
ne fonctionne pas sur les entiers, donc un transtypage explicite en chaîne§
(entre le second•
et3
) est requis (jusqu'à ce que le bogue soit corrigé).Prend l'intérêt en décimal, suivi de l'année, suivi de la liste des [Knuts, Faucilles, Galions].
Essayez-le en ligne.
Explication:
Voir cette astuce de mes 05AB1E (section Comment compresser les grands entiers? ) Pour comprendre pourquoi
•1ýÑ•
est119493
.la source
APL (NARS), 37 caractères, 74 octets
traduction de la très bonne et très peu d'octets de la solution APL par l'utilisateur de Graham en une solution qui utilise une fonction au lieu de l'entrée standard ... test et comment l'utiliser:
(je ne dis pas que j'avais compris l'algorithme)
la source
Perl 5 , 70 octets
Essayez-le en ligne!
la source