Gringotts to nie tylko skarbiec, ale także renomowana instytucja finansowa i czarodzieje potrzebują pożyczek. Ponieważ nie chcesz dać się porwać goblinom Gringotta, postanowiłeś napisać program do obliczania odsetek. Odsetki są naliczane tylko raz w roku.
Twoim zadaniem jest obliczenie całkowitej kwoty należnej po oprocentowaniu, biorąc pod uwagę kwotę główną, stopę procentową i czas (całe lata), działając w pełnych nominałach pieniędzy czarodzieja, zaokrąglając w dół do najbliższego całego Knuta. Jest 29 brązowych knutów w srebrnym sierpu i 17 sierpów w złotym galeonie.
Przykład
Loan taken out:
23 Knuts
16 Sickles
103 Galleons
@ 7.250%
For 3 years
Total owed after interest:
24 Knuts
4 Sickles
128 Galleons
Uwagi i zasady
- Dane wejściowe i wyjściowe mogą być w dowolnym dogodnym formacie. Musisz wziąć Knuts, Sierpy, Galeony, stopę procentową i czas. Wszystkie oprócz oprocentowania będą liczbami całkowitymi. Stopa procentowa jest zwiększana o 0,125%.
- Nie można zagwarantować, że pieniądze wejściowe będą kanoniczne (tzn. Możesz mieć 29 lub więcej Knutów i 17 lub więcej Sierpów).
- Dane wyjściowe muszą być reprezentacją kanoniczną. (tj. mniej niż 29 knutów i mniej niż 17 sierpów)
- Sumy należne, do 1000 galeonów, powinny być dokładne z dokładnością do 1 Knut na rok odsetkowy w porównaniu z arbitralnymi obliczeniami precyzji.
- Możesz zaokrąglać w dół po każdym roku zainteresowania lub tylko pod koniec. Obliczenia referencyjne mogą wziąć to pod uwagę przy kontroli dokładności.
Miłej gry w golfa!
0.0725
zamiast7.25
)rounding down
Odpowiedzi:
R ,
7062 bajtówWypróbuj online!
Przyjmuje dane wejściowe jako d: depozyt w knuts, sierpach, galeonach; i: stopa procentowa jako dziesiętna; y: lata. Wysyła depozyt końcowy w knutsach, sierpach, galeonach. Dzięki @Giuseppe za użycie mnożenia macierzy w celu zaoszczędzenia niektórych bajtów (i wskazanie, jak uniknąć konieczności zawijania na 1e99).
źródło
%%
funkcję, którą jest mod. Idealnie, chciałbym zostawić galeony w spokoju, ale biorąc mod liczbowy nieskończoność zwraca NaN, więc właśnie użyłem naprawdę dużej liczby (ale takiej, która jest mała w bajtach). Alternatywy, które wymyśliłem, są dłuższe (np. [ Tio.run / ##JYrLCsIwEEV/... Wypróbuj online!])9e99
... Możesz też zagrać w golfa do 63 bajtówPython 3.8 (wersja wstępna) ,
757471 bajtów-1 bajtów dzięki @EmbodimentofIgnorance
-3 bajtów dzięki @xnor
To bierze Knuts, Sierpy i Galeony jako ints, odsetki jako zmiennoprzecinkowe (dziesiętne, nie procentowe), a lata jako int. Zwraca krotkę zawierającą liczbę po zainteresowaniu odpowiednio Knutami, Sierpami i Galeonami.
Stosowanie:
Wypróbuj online!
źródło
operating in whole denominations of wizard money, rounding down
. Miałemrounding down
na myśli to, żechop off everything after the decimal point.
używanie nagłówka zdecydowanie brzmi jak łatwiejszy sposób robienia rzeczy. Zrobię to dla przyszłych postów, dziękiI\=
takiego nagłówka w ten sposób . Wygląda też na to, żek//29//17
może byćk//493
.APL + WIN,
37 2826 bajtów2 bajty zapisane dzięki lirtosiast
Wypróbuj online! Dzięki uprzejmości Dyalog Classic
Wyjaśnienie:
źródło
⌊a⊤(⎕⊥⍨a←0 17 29)×⎕*⍨1+⎕
za 24?Perl 6 , 47 bajtów
Wypróbuj online!
Jestem zaskoczony, że udało mi się przekształcić to w anonimową cokolwiek lambda! Zwłaszcza ta część, w której jest więcej
*
niż cokolwiek innego. Pobiera dane wejściowe jakointerest rate (e.g. 0.0725), years, [Knuts, Sickles, Galleons]
i zwraca listę walut w tej samej kolejności.Wyjaśnienie:
źródło
*
s, ale więcej bajtów). Reszta*
pochodzi z mnożenia (*
) i wykładniczego (**
)Galaretka , 29 bajtów
Pełen program, przyjmując argumenty
rate
;[Galleons, Sickles, Knuts]
;years
.Wydruki
[Galleons, Sickles, Knuts]
.Wypróbuj online!
Podłogi na koniec całego semestru.
÷ȷ2
może zostać usunięty, jeśli możemy zaakceptować stawkę jako stosunek, a nie procent.W jaki sposób?
źródło
Zespół procesora Intel 8087 FPU, 86 bajtów
Niezmontowane i udokumentowane:
Zaimplementowany jako MAKRO (w zasadzie funkcja), jest to kod maszynowy niespecyficzny dla systemu operacyjnego, do obliczeń wykorzystuje jedynie procesor Intel 80x87 FPU / matematyka.
Przykładowy program testowy z wyjściem:
Wynik
źródło
Japt, 48 bajtów
Moja pierwsza próba u Japt, zdobywając nagrodę @ Shaggy! Nie trzeba dodawać, że to nie jest bardzo golfowe :(
Wypróbuj online!
źródło
Haskell , 73 bajty
Wypróbuj online!
Dzięki @Laikoni za dwa bajty.
Brudne sztuczki: liczba monet na wejściu jest zmiennoprzecinkowa (
Double
), podczas gdy liczba monet na wyjściu jest całką (Integer
). Rezultatem jest para zagnieżdżona,((Galleons, Sickles), Knotts)
aby uniknąć konieczności spłaszczania do potrójnego.Wyjaśnienie
źródło
(truncate$ ... )
->truncate( ... )
i(g#s)k r n
zamiastc g s k r n
.Stax , 24 bajty
Uruchom i debuguj
Dane wejściowe to wartości rozdzielone spacjami.
interest years knuts sickles galleons
Wyjście jest oddzielone znakiem nowej linii.
źródło
TI-BASIC (TI-84),
9690 bajtówDane wejściowe to
Ans
lista z 5 pozycjami: Knuts, Sierpy, Galeony, Odsetki (dziesiętne) i Czas (lata).Dane wyjściowe są wprowadzane
Ans
i są automatycznie drukowane po zakończeniu programu.Bez golfa:
Przykład:
Wyjaśnienie:
Zostanie utworzona nowa lista,
∟C
iAns
jest w niej zapisywana.Knuts, Sierpy i Galeony są przekształcane w Knuts i przechowywane w
T
.Pobiera liczbę Knutów i stosuje do nich odsetki złożone.
Odsetki są naliczane tutaj.
Przechowuje I nteger Część z
T
modulo 493 doR
. Służy do skrócenia liczby bajtów.Ocenia listę z 3 przedmiotami (knuts, sierpy i galeony). Lista jest automatycznie zapisywana w
Ans
.Uwaga: Liczba bajtów jest obliczana na podstawie liczby bajtów podanej w [MEM] → [2] → [7] (lista programów w pamięci RAM) i odejmując liczbę znaków w nazwie programu oraz dodatkowe 8 bajtów użytych dla programu:
103 - 5 - 8 = 90 bajtów
źródło
K, 46 bajtów
c
zapisz listę do konwersji podstawowejt
to funkcja obliczająca całkowitą kwotęUżyj przykładu:
pisze
(128;4;24.29209)
Wyjaśnienie:
c/:x
przekształcić listę (galeon; sierp; knuts) w kuts1+y%100
obliczyć stopę procentową (przykład 1.0725 dla stopy 7,25%)lambda
{z(y*)\x}
wykonuje pracę: iteruje 3 razy, stosując interes * main, i zwraca ostatnią main.c\:
generuje galeon, sierpy, knuty z knutówUWAGA. - jeśli nie potrzebujesz funkcji nazw, możemy użyć lambda, oszczędzając 2 bajty
{c\:{z(y*)/x}[c/:x;1+y%100;z]}inputArgs
źródło
C # (interaktywny kompilator Visual C #) , 86 bajtów
Wybiera się jako nazwana krotka z 3 wartościami reprezentującymi knuts, sierpy i galeony, a stopa procentowa jako podwójna (nie procentowa). Naprawdę chciałbym, żeby C # miał operator potęgowania. Math.Pow jest zdecydowanie za długi :(
Wypróbuj online!
źródło
Partia, 171 bajtów
Pobiera dane wejściowe jako argumenty wiersza polecenia w kolejności Galeony, Sierpy, Knuty, odsetki, lata. Odsetki są procentowe, ale wyrażane bez znaku%. Obcina się po każdym roku. Wyjście jest w kolejności Galeony, Sierpy, Knuty. Obsługuje co najmniej 5000 galeonów. Wyjaśnienie:
Partia ma tylko arytmetykę liczb całkowitych. Na szczęście stopa procentowa jest zawsze wielokrotnością
0.125
. Zaczynamy od dzielenia na przecinek dziesiętny, dzięki czemui
staje się całkowitą częścią stopy procentowej if
ułamkiem dziesiętnym. Są one następnie mnożone przez 8. Pierwsza cyfraf
to teraz ósma procentowej stopy procentowej.Jest on następnie wyodrębniany za pomocą odcinania sznurka i dodawany w celu uzyskania stopy procentowej w 1/800. Obliczana jest również liczba Knutów.
Oblicz i dodaj odsetki każdego roku.
Wróć do Galeonów i Sierpów.
źródło
05AB1E (starsza wersja) , 24 bajty
Port odpowiedzi Perl 6 @JoKinga , więc upewnij się, że go również głosujesz, jeśli podoba ci się ta odpowiedź!
Używam starszej wersji z powodu błędu w nowej wersji,
£
który nie działa na liczbach całkowitych, więc wymagane jest jawne rzutowanie na ciąg znaków§
(między drugą•
a3
) (dopóki błąd nie zostanie naprawiony).Podaje odsetki jako dziesiętne, po których następuje rok, a następnie lista [Knuts, Sickles, Galeony].
Wypróbuj online.
Wyjaśnienie:
Zobacz moją wskazówkę 05AB1E (rozdział Jak kompresować duże liczby całkowite? ), Aby zrozumieć, dlaczego tak
•1ýÑ•
jest119493
.źródło
APL (NARS), 37 znaków, 74 bajty
tłumaczenie bardzo dobrego i bardzo mało bajtowego rozwiązania APL przez użytkownika Grahama na rozwiązanie, które używa jednej funkcji zamiast standardowego wejścia ... test i jak z niego korzystać:
(nie mówię, że zrozumiałem algorytm)
źródło
Perl 5 , 70 bajtów
Wypróbuj online!
źródło