Skarbonka jest pojemnik używany do zbierania monet w na to wyzwanie korzystać z czterech amerykańskich monet. Kwartał, bilon, nikiel, i Penny .
Wyzwanie
Twoim wyzwaniem jest stworzenie elektronicznej skarbonki. Napisz program (lub funkcję), który po uruchomieniu (lub wywołaniu) wyświetli (lub zwróci) liczbę posiadanych monet, a także całkowitą kwotę, jaką mają te monety.
Wejście
Sznurek, tablica itp. (Do wyboru) monet do skarbonki (bez rozróżniania wielkości liter).
Q - Quarter(Value of 25)
D - Dime(Value of 10)
N - Nickel(Value of 5)
P - Penny(Value of 1)
Wynik
Liczba monet z wkładu i całkowita kwota, oddzielone wybranym przez Ciebie separatorem różnym. (Kolejność, w jakiej wyprowadzane są sumy monet, nie ma znaczenia, ale całkowita wartość monety (suma) musi być ostatnim elementem)
Przykłady
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
Zasady
Standardowe luki są niedozwolone.
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach dla każdego języka!
Odpowiedzi:
Python 2 , 73 bajty
-3 bajty dzięki @Rod
Wypróbuj online!
źródło
a*b for a,b in zip(C,[25,10,5,1])
zmap(int.__mul__,C,[25,10,5,1])
zaoszczędzić kilka bajtówPython 2 , 63 bajty
Wypróbuj online!
Python 2 , 63 bajty
Wypróbuj online!
źródło
APL (Dyalog Unicode) ,
2827 bajtówWypróbuj online!
Funkcja milcząca. Pobiera dane wejściowe jako wektor w formacie
,'<input>'
.Dzięki ngn za jeden bajt!
W jaki sposób?
źródło
1⊥∘.=∘'PNDQ'
->'PNDQ'+.=¨⊂
R ,
7069 bajtówWypróbuj online!
Pobiera dane wejściowe jako wektor poszczególnych znaków. Konwertuje je na
factors
itabulate
s, a następnie oblicza wartości za pomocą iloczynu kropkowego.Dla ułatwienia testowania dodałem sposób konwersji z powyższych przypadków testowych na dane wejściowe, których oczekuje funkcja.
To ledwie przewyższa przechowywanie nazw monet jako wektorów
names
, co oznacza, że poniższe podejście byłoby bardziej golfistyczne, gdybyśmy mieli więcej typów monet:R ,
7170 bajtówWypróbuj online!
źródło
Galaretka , 19 bajtów
Wypróbuj online!
Jak to działa
źródło
JavaScript (ES6),
6361 bajtówZaoszczędź 2 bajty dzięki Shaggy
Pobiera dane wejściowe jako tablicę znaków. Wyjścia
P,N,D,Q,total
.Zainspirowany odpowiedzią Pythona na ovs .
Wypróbuj online!
Oryginalna odpowiedź, 73 bajty
Pobiera dane wejściowe jako tablicę znaków. Wyjścia
Q,D,N,P,total
.Wypróbuj online!
źródło
MATL ,
2220 bajtówWypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Objaśnienie z przykładem
Rozważ dane wejściowe
'PNNDNNQPDNPQND'
jako przykład. Zawartość stosu wyświetlana jest do góry nogami, tzn. Górny element pojawia się poniżej.źródło
!'PNDQ'=Xst[l5X25]!Y*
ma 21 bajtów. chociaż przyznaję, że go nie testowałem.Japt ,
2522 bajtówZaoszczędź 3 bajty dzięki @Shaggy
Przetestuj online! Pobiera dane pisane małymi literami
Wyjaśnienie
źródło
Excel (polska wersja językowa), 150 bajtów
Dane wejściowe znajdują się w A1. Formuły znajdują się w komórkach
B1
-F1
:w wyniku czego powstaje liczba kwartałów, dziesięciocentówek, nikli, centów i suma w komórkach
B1
,C1
,D1
,E1
iF1
odpowiednio.Wersja angielska (162 bajty):
źródło
APL + WIN,
3327 bajtów5 bajtów zaoszczędzonych dzięki Adamowi
Monity o wprowadzanie ekranu ciągu monet.
źródło
n,+/1 5 10 25×n←+⌿⎕∘.='PNDQ'
05AB1E ,
3026222119 bajtówWypróbuj online!
Wysypisko:
Wydruk:
Ponieważ coś zostało wydrukowane, stos końcowy jest ignorowany.
źródło
J , 29 bajtów
Wypróbuj online!
Wyjaśnienie:
'PNDQ'=/]
tworzy tabelę równości1#.
znajduje sumę każdego wiersza tabeli, a tym samym liczbę wystąpień każdej wartości1#.*
znajduje iloczyn skalarny argumentu lewego i prawego],
dołącza iloczyn skalarny do listy wartościźródło
C # (.NET Core) ,
163136 bajtówDzięki @raznagul za uratowanie wielu bajtów!
Wypróbuj online!
Stara wersja:
Wypróbuj online!
źródło
n.Count
zamiastn.Length
. Ponieważ został on całkowicie usunięty, możesz gostring
teraz używać .Perl 5
-pF
, 59 bajtówWypróbuj online!
źródło
Rubin , 66 bajtów
Wypróbuj online!
Nie najlepiej.
źródło
05AB1E , 19 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Java (OpenJDK 8) , 148 bajtów
Wypróbuj online!
Cóż, jest tylko jeden bajt krótszy niż inne przesłanie Javy, ale hej krótszy jest krótszy: D
Wyjaśnienie:
źródło
Gol> <> , 47 bajtów
Wypróbuj online!
Format wyjściowy to
[P Q N D Value]
.Jak to działa
źródło
Perl 5
-p
, 47 bajtówWypróbuj online!
źródło
Pyth,
232726 bajtówZapisano bajt dzięki @RK. Wykazuje jako [P, N, D, Q, wartość].
Wypróbuj tutaj
Wyjaśnienie
źródło
+Jm/Qd"PNDQ"s.b*NYJ[h05T25
C (brzęk) , 112 bajtów
Wypróbuj online!
Sekwencja wyjściowa ma teraz P, Q, D, N, wartość całkowita
Działa zarówno z małymi, jak i dużymi wejściami.
Wyjaśnienie:
"AYJE"
lub{64+1,64+25,64+10,64+5}
jest. 64 + wartość monety.d=(c|c/2)&3
(stosowany jako indeks) ma odpowiednio wartość1,2,3,0
dlaq,d,n,p
danych wejściowych, zarówno dużymi, jak i małymi literami.źródło
C # (.NET Core) , 156 bajtów
źródło
Java (OpenJDK 8) , 149 bajtów
Wypróbuj online!
źródło
Siatkówka , 50 bajtów
Wypróbuj online! Wyjścia w kolejności D, N, P, Q, ogółem. Wyjaśnienie:
Oblicz sumę, wstawiając
_
s odpowiadające wartości każdej monety.Wstaw dodatkową kopię każdego znaku, aby było co najmniej jedno dopasowanie.
Sortuj znaki w kolejności.
Policz liczbę każdego znaku po pierwszym.
źródło
SmileBASIC, 70 bajtów
Przykład:
Wyjaśnienie:
źródło
C, 149 bajtów
Wypróbuj online!
C nie ma tablic asocjacyjnych, więc sfałszowałem go (bardzo nieefektywnie, pod względem pamięci!), A następnie ponownie przejrzałem tablicę odnośników, aby dodać monety. Nie obliczy jednak waluty obcej :-)
źródło