In dieser Herausforderung werden Sie ein Programm zur Ausgabe von, wie viele Dezimalstellen in dem Eingang schreiben String und schneiden Sie die Eingabe , wenn nötig.
Beispiele
-12.32
2
32
0
3231.432
3
-34.0
0 -34
023
0 23
00324.230
2 324.23
10
0
00.3
1 0.3
0
0
-04.8330
3 -4.833
Regeln
- Die Eingabe ist eine Zeichenfolge, die durch STDIN, Funktionsargumente oder das nächstgelegene Äquivalent geführt werden kann
- Die Ausgabe kann über Funktionsrückgabe, STDOUT oder das nächstgelegene Äquivalent erfolgen.
- Die Größe der Eingabe-Ganzzahl ist unbegrenzt, mit Ausnahme der maximalen Zeichenfolgenlänge Ihrer Sprache .
- Wenn die Eingabe unnötige (führende oder nachfolgende) Nullen enthält:
- Sie sollten sie herausnehmen
- Geben Sie die Dezimalstelle in der neuen Zahl aus
- Geben Sie die neue Zahl durch ein Trennzeichen getrennt aus (z. B. Leerzeichen, Zeilenumbruch, Komma).
- Die Eingabe stimmt immer mit diesem RegEx: überein
-?\d+(\.\d+)?
, oder wenn Sie nicht RegEx sprechen :- Es könnte sein ,
-
am Anfang impliziert eine negative Zahl. Dann wird es mindestens eine Ziffer geben. Dann könnte es ... noch ein.
paar Ziffern geben. - Um zu überprüfen, ob eine Eingabe gültig ist, überprüfen Sie hier
- Es könnte sein ,
- Kein Regex
Dies ist Code-Golf, so dass der kürzeste Code in Bytes gewinnt
0
.Antworten:
PHP 7, 142 Bytes
Ich habe es irgendwie geschafft, alles in einer einzigen Druckaussage zusammenzufassen:
Läuft über die Befehlszeile wie:
Demo
Alle Testfälle anzeigen, einschließlich eines sehr langen (62 Zeichen) in Aktion:
Versuchen Sie es vor dem Kauf 1
1 Bewegen Sie den Mauszeiger über das Feld unter " Ausgabe für 7.0.0 ", um alle Ergebnisse anzuzeigen .
quelle
Python 2,
165180 BytesZuerst dachte ich darüber nach, mein erstes Pyth-Programm zu schreiben, damit es die Ziffern nach dem möglichen Komma zählt. Aber dann wurde ich ziemlich verärgert, ich weiß nicht, wie Sie diese Sprache genießen würden, denke, es ist nur zu Gewinnzwecken. Wie auch immer, hier ist meine Lösung (bearbeitet, da sie bei großen Zahlen nicht funktioniert hat):
Für den Fall, dass jemand auf meiner Arbeit in Pyth aufbauen möchte:
~b@+cz"."" "1Wq@b_1"0"~b<b_1)plrb6
Um zu sehen, wo Sie sich befinden, möchten Sie möglicherweise ap dazwischen einfügen@+
.quelle
05AB1E , 23 Bytes (nicht wettbewerbsfähig)
Verdammt, ich war so nah dran. Python analysiert sehr große Floats in wissenschaftlicher Notation, daher habe ich diesen Fehler im Interpreter behoben. Dies geschah jedoch nach der Herausforderung und meine Einreichung ist daher nicht wettbewerbsfähig.
Code:
Erläuterung:
Verwendet die ISO 8859-1-Codierung .
quelle
JavaScript (ES6), 156
162Bearbeiten Behobener Fehler für '-0' - thx @Fez Vrasta Edit 2 6 Bytes gespeichert thx @Neil
Es ist ein Chaos, aber es basiert zu 100% auf Zeichenfolgen - keine Begrenzung aufgrund numerischer Typen
Weniger Golf gespielt
Prüfung
quelle
-0
als Eingabe .. wir ausgeben sollen0
, nicht0 0
c=='.'?p=t:+c&&(l=t,k=k||t)
Arbeit , die Ihnen ein Byte speichern?t=l=k=p=0
und++t&&c=='.'
usw.ES6,
102180177 BytesBearbeiten: 3 Bytes dank @ edc65 gespeichert; 1 Byte dank insertusernamehere gespeichert.
quelle
t=[...s]
t[--l]==0
durcht[--l]<1
.C ++, 180 Bytes
Dies ist portables C ++, das keine Annahmen zur Zeichenkodierung macht und keine Bibliotheken enthält (nicht einmal die Standardbibliothek).
Eingabe wird übergeben
s
. Die Anzahl der Dezimalstellen wird zurückgegeben. Die Zeichenfolge wird an Ort und Stelle geändert und der neue Start wird in zurückgegebenp
.Von Rechts
size_t
wegen sollte ich a zurückgeben , aber stattdessen werde ich behaupten, dass Sie dies für ein Betriebssystem kompilieren sollten, das die Größe von Zeichenfolgen auf die Hälfte des Bereichs von begrenztint
. Ich denke das ist vernünftig; Auf 32-Bit-Architekturen werden mehr als 2 Milliarden Dezimalstellen gezählt.Erläuterung
Testprogramm
Testausgabe
quelle