W tym wyzwaniem, można napisać program do wyjścia, ile miejsc po przecinku są w wejściowego łańcucha i wykończenia wejście w razie potrzeby.
Przykłady
-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
Zasady
- Dane wejściowe będą ciągiem, przez który można pobrać STDIN, argumenty funkcji lub najbliższy odpowiednik
- Dane wyjściowe mogą być zwracane przez funkcję return, STDOUT lub najbliższy odpowiednik.
- Nie ma ograniczenia rozmiaru wejściowej liczby całkowitej, z wyjątkiem maksymalnej długości łańcucha w Twoim języku .
- Jeśli dane wejściowe mają niepotrzebne (wiodące lub końcowe) zera:
- Powinieneś je wyjąć
- Podaj liczbę miejsc dziesiętnych w nowej liczbie
- Wyjście nowej liczby oddzielonej separatorem (np. Spacja, nowa linia, przecinek)
- Dane wejściowe zawsze będą pasować do tego RegEx:
-?\d+(\.\d+)?
lub, jeśli nie mówisz RegEx :- Na początku może występować
-
liczba ujemna. Wtedy będzie co najmniej jedna cyfra. Potem może być ... a.
i jeszcze więcej cyfr. - Aby sprawdzić, czy dane wejściowe są prawidłowe, sprawdź tutaj
- Na początku może występować
- Bez regexu
To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach
0
.Odpowiedzi:
PHP 7, 142 bajty
W jakiś sposób udało mi się wycisnąć wszystko w jednym wyciągu:
Działa z wiersza poleceń, na przykład:
Próbny
Zobacz wszystkie przypadki testowe, w tym bardzo długi (62 znaki) w akcji:
Wypróbuj przed zakupem 1
1 Umieść wskaźnik myszy nad polem poniżej „Dane wyjściowe dla 7.0.0 ”, aby zobaczyć wszystkie wyniki.
źródło
Python 2,
165180 bajtówNa początku myślałem o napisaniu pierwszego programu w języku Pyth, aby policzyć cyfry po potencjalnym przecinku. Ale potem bardzo się zdenerwowałem, nie wiem, jak ci się spodoba ten język, chyba tylko dla wygranej. W każdym razie oto moje rozwiązanie (edytowane, ponieważ nie działało dla dużych liczb):
W przypadku, gdy ktoś chce skorzystać z mojej pracy w Pyth:
~b@+cz"."" "1Wq@b_1"0"~b<b_1)plrb6
Aby zobaczyć, gdzie jesteś, możesz wstawić ap pomiędzy@+
.źródło
05AB1E , 23 bajty (niekonkurencyjny)
Cholera, byłem tak blisko. Python analizuje bardzo duże zmiennoprzecinkowe przy użyciu notacji naukowej, więc naprawiłem ten błąd w tłumaczu. Stało się tak jednak po konkursie i dlatego moje przedłożenie jest niekonkurencyjne.
Kod:
Wyjaśnienie:
Wykorzystuje kodowanie ISO 8859-1 .
źródło
JavaScript (ES6), 156
162Edytuj Naprawiono błąd dla '-0' - thx @Fez Vrasta Edytuj 2 6 bajtów zapisanych thx @Neil
To bałagan, ale w 100% oparty na łańcuchach - bez ograniczeń ze względu na typy numeryczne
Mniej golfa
Test
źródło
-0
wejściowymi. Powinniśmy wysyłać dane0
, a nie0 0
c=='.'?p=t:+c&&(l=t,k=k||t)
praca oszczędza bajt?t=l=k=p=0
i++t&&c=='.'
itp.ES6,
102180177 bajtówEdycja: Zapisano 3 bajty dzięki @ edc65; zapisano 1 bajt dzięki inserttusernameherehere.
źródło
t=[...s]
t[--l]==0
sięt[--l]<1
.C ++, 180 bajtów
Jest to przenośny C ++, który nie przyjmuje żadnych założeń dotyczących kodowania znaków i nie zawiera bibliotek (nawet biblioteki standardowej).
Dane wejściowe są przekazywane
s
. Zwracana jest liczba miejsc dziesiętnych; ciąg jest modyfikowany w miejscu, a nowy początek jest zwracany wp
.Zgodnie z prawem powinienem zwrócić a
size_t
, ale zamiast tego zamierzam twierdzić, że powinieneś skompilować to dla systemu operacyjnego, który ogranicza rozmiar łańcuchów do połowy zakresuint
. Myślę, że to rozsądne; liczy ponad 2 miliardy miejsc dziesiętnych w architekturze 32-bitowej.Wyjaśnienie
Program testowy
Wyjście testowe
źródło