Wie der Titel - wenn auch diskret - andeutet, bezahle ich nur mit Dollars.
Die Herausforderung
Schreiben Sie eine Funktion / ein Programm, die / das eine Zeichenfolge als Eingabe verwendet. Dabei handelt es sich um einen Geldwert, dem ein Symbol vorangestellt ist. ex) £4.99
. Geben Sie dann den gleichen Betrag in USD zurück.
Eingang
Sie erhalten eine Zeichenfolge als Eingabe. Es wird das Währungssymbol gefolgt von einer Zahl mit zwei Dezimalstellen (die sein könnten .00
) haben. Es wird entweder Dezimalstellen .
und / oder Kommas geben ,
, die die Zahl trennen. Die folgenden Währungssymbole kommen in die Eingaben:
Euro: €
Pfund Sterling: £
Yuan Renminbi: ¥
Außerdem wird je nach Währung ein Komma oder ein Dezimalpunkt verwendet, um die "Dollar" von den "Cent" zu trennen:
Euro: #. ###, ##
Pfund Sterling: #, ###. ##
Yuan Renminbi: #, ###. ##
Ausgabe
Sie konvertieren die Eingabe von der durch das Symbol festgelegten Währung in USD, wobei auf zwei Dezimalstellen gerundet wird. Die Ausgabe erfolgt im Format $#,###.##
und es werden natürlich mehr Zahlen links von der Ausgabe angezeigt ( BEARBEITEN: Dies bedeutet, dass die Ausgabe genau wie die Eingabe eine beliebige Anzahl von Kommas enthält ). Der von uns verwendete Wechselkurs ist unten angegeben.
Sie können davon ausgehen, dass die Eingabe ein Symbol enthält, das nur eines der oben genannten ( € £ ¥ . ,
) ist - dass es immer gültig ist.
Wechselkurse
€1 : $1.10
£1 : $1.37
¥1 : $0.15
Beispiele
Input:
€1,37
£4.00
¥2,782,122.78
Respective output:
$1.51
$5.48
$417,318.42
Letzte Worte
- Wenn Sie eines der oben genannten Symbole (€, £, ¥) verwenden, können Sie diese als 1 Byte zählen
- Das ist Code Golf, also gewinnt der kürzeste Code in Bytes!
10,0000.15
)£1 : $1.51
1.37 * 1.10 = 1,507 = 1,51
(also nicht1.52
) und4.00 * 1.37 = 5.48
(nicht5.50
) und2782122.78 * 0.15 = 417318.417 = 417318.42
(nicht420165.06
) ...: SAntworten:
Pyth -
54534847 BytesBedingte Bewerbung vergessen
W
.Test Suite .
quelle
Python 3.6 (Vorabversion), 87
Verwendet f-Strings , um das Ergebnis auszuwerten und zu formatieren .
s.translate({46:'',44:''})
Entfernt Punkte und Kommass
und macht es zu einem gültigenint
Literal. Anschließendint(...)
wird es in das eigentlicheint
Objekt konvertiert .quelle
Konvex,
565554 BytesNun, das kann definitiv gekürzt werden. Probieren Sie es online!
Dank Lynn ein Byte gespart!
Erklärung, wann ich Zugang zu einem Computer bekomme.
quelle
[1.1_.27+.15]
?Python 3.5,
137131121120117 Bytes:(Danke an Maltysen für den Hinweis, 6 Bytes zu sparen
(137 -> 131)
!)Probieren Sie es online! (Ideone)
quelle
.format()
tut es für Sie, wenn Sie tun${:,.2f}
46:0
Ersetzt Punkte durch NUL-Zeichen.JavaScript (ES6), 107
Einfach und unkompliziert
, wahrscheinlich mehr GolfHinweis: In FireFox getestet. Viele Browser (besonders mobile) unterstützen Buggys von
toLocaleString
PRÜFUNG
quelle
Java 7,
240227215211207202199196 Bytes(201 - 2 Bytes aufgrund der Regel " Wenn Sie eines der obigen Symbole (€, £, ¥) verwenden, können Sie diese als 1 Byte zählen ")
Vielen Dank an @Frozn für das Speichern vieler Bytes.
Ungolfed & Testcode:
Probieren Sie es hier aus.
Ausgabe:
quelle
char c=a.charAt(0)
(Alles in allem brauchen Sie überhaupt nichtc
, siehe meine Antwort)d *
aus dem Ternär herausziehen , sparen Sie einige Duplikate. Wie folgt aussieht:d*(c=='€'?1.1:c=='£'?1.37:.15)/100
./100
und*.01
ist die gleiche Anzahl von Bytes, undc=='€'?.011:c=='£'?.0137:.0015
ist auch genau das gleiche wie bei der/100
.'£' < '¥' < '€'
. So können Sie schreiben,c<'¥'?1.37:c>'¥'?1.1:.15
was 2 Zeichen kürzer ist.d
mehr brauchen, da es nur einmal verwendet wird.F #, 198 Bytes
Nicht Golfspieler:
Ich versuche immer noch, F # herauszufinden, daher nimmt der Umgang mit den Tausendertrennzeichen eine Menge Bytes in Anspruch.
Gemäß den Herausforderungsregeln werden die Symbole Euro, Yen und Pfund als jeweils ein Byte gezählt, unabhängig davon, wie Unicode sie intern speichert.
quelle
Python 3.5,
10198Die Euro-, Pfund- und Yen-Symbole werden gemäß den Herausforderungsregeln als jeweils 1 Byte / Zeichen gezählt.
Anstatt Tausender- und Dezimaltrennzeichen zu übersetzen oder zu interpretieren, werden diese einfach entfernt, um eine einfache Ziffernfolge zu erhalten.
Die Ziffernfolge (nach dem Währungssymbol) wird in eine Ganzzahl umgewandelt.
Das Währungssymbol wird als Index für ein Wörterbuch der Umrechnungskurse verwendet. Die Umrechnung erfolgt durch Multiplikation mit dem Umrechnungskurs und Division durch 10000.
Das Ergebnis wird mit einem führenden Dollarzeichen, zwei Dezimalstellen und Kommas für die Gruppierung formatiert.
quelle
Python 3, 112 Bytes NICHT WETTBEWERBSFÄHIG
Dies ist kein Wettbewerb, da ich nicht der Meinung bin, dass ich meine eigene Frage beantworten darf.
Außerdem hatte ich noch keine Chance, dies auf einem Computer auszuführen, aber es scheint mir, als ob es funktionieren sollte. Ich werde es auf einem Computer ausführen, sobald ich eine Chance habe.
quelle
PHP, 117 Bytes
Dies nutzt eine veraltete Funktion; Ersetzen
ereg_replace('[^0-9]'
durchpreg_replace('%[^\d]%'
, um den Code vollständig zu modernisieren. fügt 1 Byte hinzu.quelle
CJam, 54 Bytes
Probieren Sie es hier aus!
quelle