Gringotts ist nicht nur ein Tresor, sondern auch ein angesehenes Finanzinstitut und Zauberer benötigen Kredite. Da Sie nicht von den Gringotts-Goblins verarscht werden möchten, haben Sie beschlossen, ein Programm zur Zinsberechnung zu schreiben. Die Zinsen werden nur jährlich berechnet.
Ihre Aufgabe ist es, den geschuldeten Gesamtbetrag nach Zinsen unter Berücksichtigung des Kapitals, des Zinssatzes und der Zeit (ganze Jahre) zu berechnen und dabei auf den nächsten ganzen Knut abzurunden. Es gibt 29 Bronzeknoten in einer Silbernen Sichel und 17 Sicheln in einer Goldenen Galeone.
Beispiel
Loan taken out:
23 Knuts
16 Sickles
103 Galleons
@ 7.250%
For 3 years
Total owed after interest:
24 Knuts
4 Sickles
128 Galleons
Notizen und Regeln
- Die Ein- und Ausgabe kann in jedem beliebigen Format erfolgen. Sie müssen Knuts, Sicheln, Galeonen, Zinssatz und Zeit berücksichtigen. Alle außer dem Zinssatz sind ganze Zahlen. Der Zinssatz wird in Schritten von 0,125% angegeben.
- Es wird nicht garantiert, dass das eingegebene Geld kanonisch ist (dh Sie können 29 oder mehr Knuts und 17 oder mehr Sicheln haben.)
- Die Ausgabe muss die kanonische Darstellung sein. (dh weniger als 29 Knuts und weniger als 17 Sicheln)
- Geschuldete Summen von bis zu 1.000 Galeonen sollten im Vergleich zu willkürlichen Präzisionsberechnungen auf 1 Knut pro Jahr genau sein.
- Sie können nach jedem Jahr des Interesses oder nur am Ende abrunden. Referenzberechnungen können dies für Genauigkeitsprüfungen berücksichtigen.
Viel Spaß beim Golfen!
0.0725
statt7.25
)rounding down
Antworten:
R ,
7062 BytesProbieren Sie es online!
Nimmt Eingabe als d: Einzahlung in Knuts, Sicheln, Galeonen; i: Zinssatz als Dezimalzahl; y: Jahre. Endgültige Einzahlung in Knuts, Sicheln, Galeonen. Vielen Dank an @ Giuseppe für die Verwendung der Matrixmultiplikation, um einige Bytes zu sparen (und für den Hinweis, dass kein Zeilenumbruch bei 1e99 erforderlich ist).
quelle
%%
Funktion, die mod ist. Idealerweise würde ich die Galeonen gerne in Ruhe lassen, aber eine Zahl von unendlich zu nehmen gibt NaN zurück, und so habe ich gerade eine wirklich große Zahl verwendet (aber eine, die in Bytes klein ist). Die Alternativen, die ich mir ausgedacht habe, sind länger (zB [ tio.run/##JYrLCsIwEEV/… Online ausprobieren !])9e99
... Auch können Sie bis zu 63 BytesPython 3.8 (Vorabversion) ,
757471 Byte-1 Bytes dank @EmbodimentofIgnorance
-3 Bytes dank @xnor
Dies nimmt Knuts, Sickles und Galleons als Ints, Interesse als Float (dezimal, nicht prozentual) und Jahre als Int. Es wird ein Tupel zurückgegeben, das die Nummer nach Interesse von Knuts, Sickles bzw. Galleons enthält.
Verwendung:
Probieren Sie es online!
quelle
operating in whole denominations of wizard money, rounding down
. Ich haberounding down
gemeint, dass diechop off everything after the decimal point.
Verwendung des Headers definitiv eine einfachere Möglichkeit ist, Dinge zu tun. Ich werde das für zukünftige Beiträge tun, dankeI\=
in der Kopfzeile wie diese . Auch so sieht es ausk//29//17
kann seink//493
.APL + WIN,
37 2826 Bytes2 Bytes gespart dank Lirtosiast
Probieren Sie es online! Mit freundlicher Genehmigung von Dyalog Classic
Erläuterung:
quelle
⌊a⊤(⎕⊥⍨a←0 17 29)×⎕*⍨1+⎕
für 24?Perl 6 , 47 Bytes
Probieren Sie es online!
Ich bin überrascht, dass ich es geschafft habe, einen anonymen Whatever Lambda zu erstellen! Besonders der Teil, wo es mehr ist
*
als alles andere. Übernimmt die Eingabe alsinterest rate (e.g. 0.0725), years, [Knuts, Sickles, Galleons]
und gibt eine Liste der Währungen in derselben Reihenfolge zurück.Erläuterung:
quelle
*
s, aber mehr Bytes aufteilen kann ). Der Rest der*
s stammt von multiplication (*
) und exponentials (**
)Gelee , 29 Bytes
Ein volles Programm zu akzeptieren Argumente
rate
;[Galleons, Sickles, Knuts]
;years
.Druckt
[Galleons, Sickles, Knuts]
.Probieren Sie es online!
Fußböden am Ende der gesamten Laufzeit.
÷ȷ2
kann entfernt werden, wenn wir den Satz eher als Verhältnis als als Prozentsatz akzeptieren.Wie?
quelle
Intel 8087 FPU-Assembly, 86 Byte
Zerlegt und dokumentiert:
Als MACRO (im Grunde genommen eine Funktion) implementiert, ist dies kein betriebssystemspezifischer Maschinencode, für dessen Berechnung nur der Intel 80x87 FPU / Mathe-Coprozessor verwendet wird.
Beispiel Testprogramm mit Ausgabe:
Ausgabe
quelle
Japt, 48 Bytes
Mein erster Versuch bei Japt, für @ Shaggy's Kopfgeld! Unnötig zu sagen, das ist nicht sehr golfen :(
Probieren Sie es online!
quelle
Haskell , 73 Bytes
Probieren Sie es online!
Danke an @Laikoni für zwei Bytes.
Die schmutzigen Tricks: Die Anzahl der Münzen in der Eingabe ist Gleitkomma (
Double
), während die Anzahl der Münzen in der Ausgabe ganzzahlig ist (Integer
). Das Ergebnis ist ein verschachteltes Paar((Galleons, Sickles), Knotts)
, um zu vermeiden, dass es zu einem Tripel abgeflacht wird.Erläuterung
quelle
(truncate$ ... )
->truncate( ... )
und(g#s)k r n
anstelle vonc g s k r n
.Stax , 24 Bytes
Führen Sie es aus und debuggen Sie es
Die Eingabe erfolgt durch Leerzeichen getrennt.
interest years knuts sickles galleons
Die Ausgabe erfolgt in Zeilenumbrüchen.
quelle
TI-BASIC (TI-84),
96 bis90 BytesEingabe ist
Ans
eine Liste mit 5 Elementen: Knoten, Sicheln, Galeonen, Zinsen (dezimal) und Zeit (Jahre).Die Ausgabe erfolgt in
Ans
und wird automatisch ausgedruckt, wenn das Programm abgeschlossen ist.Nicht golfen:
Beispiel:
Erläuterung:
Eine neue Liste,
∟C
wird erstellt undAns
darin gespeichert.Die Knuts, Sicheln und Galeonen werden in Knuts umgewandelt und in gespeichert
T
.Nimmt die Menge an Knuts und wendet Zinseszinsen darauf an.
Zinsen werden hier berechnet.
Speichert den I nteger Part von
T
modulo 493 inR
. Wird verwendet, um die Byteanzahl zu verkürzen.Wertet eine Liste mit 3 Elementen aus (Knuts, Sickles und Galleons). Die Liste wird automatisch in gespeichert
Ans
.Hinweis: Die Byteanzahl wird anhand der in [MEM] angegebenen Byteanzahl ausgewertet. → [2] → [7] (Programmliste im RAM) angegebene Byteanzahl abgezogen wird und die Anzahl der Zeichen im Programmnamen sowie weitere 8 für das Programm verwendete Bytes abgezogen werden:
103 - 5 - 8 = 90 Bytes
quelle
K, 46 Bytes
c
Speichern Sie die Liste für die Basiskonvertierungt
ist die Funktion, die den Gesamtbetrag berechnetAnwendungsbeispiel:
schreibt
(128;4;24.29209)
Erläuterung:
c/:x
Verwandle die Liste (Galeone; Sichel; Knuts) in Kuts1+y%100
Zinssatz berechnen (Beispiel 1.0725 für 7,25% Satz)lambda
{z(y*)\x}
erledigt die Arbeit: dreimal iterieren, interes * main anwenden und final main zurückgeben.c\:
erzeugt Galeone, Sicheln, Knuts aus KnutsHINWEIS: Wenn Sie keine Namensfunktion benötigen, können wir ein Lambda verwenden, das 2 Bytes spart
{c\:{z(y*)/x}[c/:x;1+y%100;z]}inputArgs
quelle
C # (Visual C # Interactive Compiler) , 86 Byte
Nimmt inout als benanntes Tupel mit 3 Werten auf, die Knuts, Sicheln und Galeonen darstellen, und dem Zinssatz als Double (kein Prozentsatz). Ich wünschte wirklich, C # hätte einen Exponentationsoperator. Math.Pow ist viel zu lang :(
Probieren Sie es online!
quelle
Batch, 171 Bytes
Nimmt Eingaben als Befehlszeilenargumente in der Reihenfolge Galeonen, Sicheln, Knuts, Interesse, Jahre auf. Zins ist ein Prozentsatz, der jedoch ohne das% -Zeichen ausgedrückt wird. Nach jedem Jahr abgeschnitten. Die Ausgabe erfolgt in der Reihenfolge Galeonen, Sicheln, Knuts. Unterstützt mindestens 5000 Galeonen. Erläuterung:
Batch hat nur ganzzahlige Arithmetik. Glücklicherweise ist der Zinssatz immer ein Vielfaches von
0.125
. Wir beginnen mit der Aufteilung auf den Dezimalpunkt, sodass dieseri
zum ganzzahligen Teil des Zinssatzes undf
des Dezimalbruchs wird. Diese werden dann mit 8 multipliziert. Die erste Ziffer vonf
ist jetzt die Zahl der Achtel des prozentualen Zinssatzes.Dieses wird dann mit Hilfe von String-Slicing extrahiert und zu einem Zinssatz von 1/800 addiert. Die Anzahl der Knuts wird ebenfalls berechnet.
Berechnen und addieren Sie die jährlichen Zinsen.
Konvertiere zurück zu Galeonen und Sicheln.
quelle
05AB1E (Legacy) , 24 Byte
Port of @JoKings Perl 6-Antwort , also stelle sicher, dass du ihn auch positiv bewertest, wenn dir diese Antwort gefällt!
Ich verwende die Vorgängerversion aufgrund eines Fehlers in der neuen Version, bei dem
£
Ganzzahlen nicht berücksichtigt werden, also eine explizite Umwandlung in Zeichenfolgen§
(zwischen der zweiten•
und der zweiten Version)3
) erforderlich ist (bis der Fehler behoben ist).Nimmt das Interesse als Dezimalzahl, gefolgt von dem Jahr, gefolgt von der Liste von [Knuts, Sickles, Galleons].
Probieren Sie es online aus.
Erläuterung:
Sehen Sie sich meinen Tipp 05AB1E (Abschnitt Wie komprimiere ich große ganze Zahlen? ) An, um zu verstehen, warum dies so
•1ýÑ•
ist119493
.quelle
APL (NARS), 37 Zeichen, 74 Byte
Übersetzung der sehr guten und sehr wenigen Bytes APL-Lösung von Graham-Benutzern in eine Lösung, die eine Funktion anstelle der Standardeingabe verwendet ... Test und Verwendung:
(Ich sage nicht, dass ich den Algorithmus verstanden habe)
quelle
Perl 5 , 70 Bytes
Probieren Sie es online!
quelle