Ein Sparschwein ist ein Behälter, in dem Münzen gesammelt werden. Verwenden Sie für diese Herausforderung die vier US-Münzen: Viertel, Cent, Nickel und Penny .
Herausforderung
Ihre Herausforderung besteht darin, ein elektronisches Sparschwein zu schaffen. Schreiben Sie ein Programm (oder eine Funktion), das beim Ausführen (oder Aufrufen) die Anzahl jeder Münze sowie den Gesamtbetrag der Münzen ausgibt (oder zurückgibt).
Eingang
Eine Zeichenfolge, ein Array usw. (nach Ihrer Wahl) der Münzen in Ihr Sparschwein (ohne Berücksichtigung der Groß- und Kleinschreibung).
Q - Quarter(Value of 25)
D - Dime(Value of 10)
N - Nickel(Value of 5)
P - Penny(Value of 1)
Ausgabe
Die Anzahl der Münzen aus der Eingabe und der Gesamtbetrag, getrennt durch das nicht ganzzahlige Trennzeichen Ihrer Wahl. (Die Reihenfolge, in der Sie die Münzsummen ausgeben, spielt keine Rolle, aber der Gesamtmünzwert (Summe) muss das letzte Element sein.)
Beispiele
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
Regeln
Standardlücken sind nicht erlaubt.
Dies ist Code-Golf , also gewinnt der kürzeste Code in Bytes für jede Sprache!
Antworten:
Python 2 , 73 Bytes
-3 Bytes dank @Rod
Probieren Sie es online aus!
quelle
a*b for a,b in zip(C,[25,10,5,1])
mitmap(int.__mul__,C,[25,10,5,1])
zu wenigen Bytes speichernPython 2 , 63 Bytes
Probieren Sie es online aus!
Python 2 , 63 Bytes
Probieren Sie es online aus!
quelle
APL (Dyalog Unicode) ,
2827 BytesProbieren Sie es online aus!
Stillschweigende Funktion. Übernimmt die Eingabe als Vektor im Format
,'<input>'
.Danke an ngn für ein Byte!
Wie?
quelle
1⊥∘.=∘'PNDQ'
->'PNDQ'+.=¨⊂
R ,
7069 BytesProbieren Sie es online aus!
Nimmt die Eingabe als Vektor einzelner Zeichen auf. Konvertiert sie in
factors
undtabulate
s und berechnet dann die Werte mit einem Punktprodukt.Zur Vereinfachung der Testzwecke habe ich eine Möglichkeit hinzugefügt, die obigen Testfälle in die von der Funktion erwartete Eingabe zu konvertieren.
Dies ist kaum
names
besser als das Speichern der Münznamen als Vektor , was bedeutet, dass der folgende Ansatz wahrscheinlich Golfspieler wäre, wenn wir mehr Münztypen hätten:R ,
7170 BytesProbieren Sie es online aus!
quelle
Gelee , 19 Bytes
Probieren Sie es online aus!
Wie es funktioniert
quelle
JavaScript (ES6),
6361 Byte2 Bytes dank Shaggy gespeichert
Nimmt die Eingabe als Array von Zeichen auf. Ausgänge
P,N,D,Q,total
.Inspiriert von der Python-Antwort von ovs .
Probieren Sie es online aus!
Ursprüngliche Antwort, 73 Bytes
Nimmt die Eingabe als Array von Zeichen auf. Ausgänge
Q,D,N,P,total
.Probieren Sie es online aus!
quelle
MATL ,
2220 BytesProbieren Sie es online aus! Oder überprüfen Sie alle Testfälle .
Erklärung mit Beispiel
Betrachten Sie die Eingabe
'PNNDNNQPDNPQND'
als Beispiel. Der Stapelinhalt wird verkehrt herum angezeigt, dh das obere Element wird unten angezeigt.quelle
!'PNDQ'=Xst[l5X25]!Y*
ist 21 Bytes. obwohl ich zugebe, dass ich es nicht getestet habe.Japt ,
2522 Bytes3 Bytes dank @Shaggy gespeichert
Testen Sie es online! Nimmt Eingaben in Kleinbuchstaben vor
Erläuterung
quelle
Excel (polnische Sprachversion), 150 Bytes
Die Eingabe erfolgt in A1. Die Formeln sind in Zellen
B1
-F1
:was zu einer Ausgabe der Anzahl von Vierteln, Dimes, Nickels, pennys und die Summe in Zellen
B1
,C1
,D1
,E1
undF1
sind.Englische Sprachversion (162 Bytes):
quelle
APL + WIN,
3327 Bytes5 Bytes dank Adam gespeichert
Fordert zur Bildschirmeingabe der Münzzeichenfolge auf.
quelle
n,+/1 5 10 25×n←+⌿⎕∘.='PNDQ'
05AB1E ,
3026222119 BytesProbieren Sie es online aus!
Dump:
Gedruckte Ausgabe:
Da etwas gedruckt wurde, wird der Endstapel ignoriert.
quelle
J , 29 Bytes
Probieren Sie es online aus!
Erläuterung:
'PNDQ'=/]
erstellt eine Gleichheitstabelle1#.
findet die Summe jeder Zeile der Tabelle, also die Anzahl der Vorkommen jedes Wertes1#.*
findet das Punktprodukt seines linken und rechten Arguments],
Hängt das Punktprodukt an die Werteliste anquelle
C # (.NET Core) ,
163136 ByteVielen Dank an @raznagul für das Speichern vieler Bytes!
Probieren Sie es online aus!
Alte Version:
Probieren Sie es online aus!
quelle
n.Count
stattdessen verwendenn.Length
. Da das komplett weggelassen wurde, können Sie esstring
jetzt verwenden.Perl 5
-pF
, 59 BytesProbieren Sie es online aus!
quelle
Ruby , 66 Bytes
Probieren Sie es online aus!
Nicht gut.
quelle
05AB1E , 19 Bytes
Probieren Sie es online aus!
Erläuterung
quelle
Java (OpenJDK 8) , 148 Bytes
Probieren Sie es online aus!
Nun, es ist nur ein Byte kürzer als die andere Java-Übermittlung, aber hey - kürzer ist kürzer: D.
Erläuterung:
quelle
Gol> <> , 47 Bytes
Probieren Sie es online aus!
Das Ausgabeformat ist
[P Q N D Value]
.Wie es funktioniert
quelle
Perl 5
-p
, 47 BytesProbieren Sie es online aus!
quelle
Pyth,
232726 BytesDank @RK ein Byte gespeichert. Ausgaben als [P, N, D, Q, Wert].
Probieren Sie es hier aus
Erläuterung
quelle
+Jm/Qd"PNDQ"s.b*NYJ[h05T25
C (Klirren) , 112 Bytes
Probieren Sie es online aus!
Die Ausgangssequenz ist jetzt P, Q, D, N, Gesamtwert.
Funktioniert sowohl mit Eingaben in Klein- als auch in Großbuchstaben.
Erläuterung:
"AYJE"
oder{64+1,64+25,64+10,64+5}
ist. 64 + Münzwert.d=(c|c/2)&3
(wird als Index verwendet) hat einen Wert1,2,3,0
fürq,d,n,p
Eingaben, sowohl in Groß- als auch in Kleinbuchstaben.quelle
C # (.NET Core) , 156 Byte
quelle
Java (OpenJDK 8) , 149 Bytes
Probieren Sie es online aus!
quelle
Netzhaut , 50 Bytes
Probieren Sie es online aus! Ausgaben in der Reihenfolge D, N, P, Q, gesamt. Erläuterung:
Berechnen Sie die Summe, indem Sie
_
s einfügen , das dem Wert jeder Münze entspricht.Fügen Sie eine zusätzliche Kopie jedes Zeichens ein, damit mindestens eine davon übereinstimmt.
Sortieren Sie die Zeichen in der richtigen Reihenfolge.
Zählen Sie die Nummer jedes Zeichens nach dem ersten.
quelle
SmileBASIC, 70 Bytes
Beispiel:
Erläuterung:
quelle
C 149 Bytes
Probieren Sie es online aus!
C hat keine assoziativen Arrays, also fälsche ich es (sehr ineffizient, was den Speicher betrifft!) Und durchlaufe es dann erneut mit einem Lookup-Array, um die Münzen zu addieren. Es wird jedoch keine Fremdwährung berechnet :-)
quelle