Wyzwanie jest proste: Określ typ danych wejściowych i wyślij identyfikator informujący, jaki to typ.
- "UI", liczba całkowita bez znaku:
0
,1
,34
,111111111111111111111111111111111111111111
- "SI", ze znakiem:
+0
,+1
,+42
,-1
,-3
,-111111111111111111111111111111111111111111
- "UD", bez znaku dziesiętnego:
0.0
,1.23
,1234.1234
- "SD", podpisanej dziesiętny:
-0.0
,+0.0
,-1.235
- „LE”, litera:
a
-z
iA
-Z
- „SY”, Symbol: Punkty kodowe ASCII:
[32-47, 58-64, 91-96, 123-126]
(tzn. Wszystkie znaki z wyjątkiem cyfr i liter) - „ST”, ciąg: dwa lub więcej znaków, których nie można przeanalizować jako żadnego z powyższych formatów liczbowych
Zasady:
- Dane wejściowe będą miały długość 1-99 znaków
- Dane wejściowe będą zawierać tylko drukowalne znaki ASCII, punkty kodowe: 32-126.
- Dane wyjściowe powinny składać się z dwóch liter identyfikujących zdefiniowanych powyżej (UI, SI ...)
- Obowiązują standardowe zasady we / wy
Przykłady:
UI:
0
01
34
12938219383278319086135768712319838871631827319218923
SI:
-0
+01
+1
-123
+123
UD:
0.0
3.1415
2.718281828459045235360287471352662497757
SD:
+0.0
-3.1415
+2.718281828459045235360287471352662497757
LE:
a
k
L
Z
SY:
@
"
+
-
ST:
Hello, World!
f2!"
+23df
1234A
'"!
.012
1.
UI
+-1
5+3
SY
być więcej niż jedna postać?111111111111111111111111111111111111111111
liczbą całkowitą.uint8
lubint64
, ale to zdecydowanie liczba całkowita .Odpowiedzi:
Pyth - 47 bajtów
Potrafi grać w golfa kilka bajtów poza kilkoma sztuczkami krojenia.
Pakiet testowy .
źródło
JavaScript (ES6), 99
Test
źródło
(\+|-)
ale nie zapisano bajtówKod maszynowy Turinga, 1544 bajty
Wypróbuj online!
źródło
Retina,
9897 bajtówTo naprawdę dobry sposób na ćwiczenie moich umiejętności wyrażania regularnego.
Wypróbuj online!
źródło
^[a-zA-Z]$
abyi`^[a-z]$
zapisać jeden bajtLua, 157 bajtów
Wypróbuj online!
Gra w golfa:
Nie golfowany:
źródło
JavaScript (ES6),
125120 bajtówAlternatywna wersja, również 120 bajtów:
źródło
eval(`/regex/`)
konstruktoraJava, 192 bajty
źródło
return (v.length()==1?"SY":"ST");
może byćreturn v.length()<2?"SY":"ST";
(-3 bajty) Lub może być tak:String t(String v){for(String x:"UI\\d+;SI[-+]\\d+;UD\\d+\\.\\d+;SD[-+]\\d+\\.\\d+".split(";"))if(v.matches(x.substring(2)))return x.substring(0,2);return v.length()<2?"SY":"ST";}
( 179 bajtów ) A dodatkowo możesz zmienićString t(String v)
na,v->
kiedy używasz lambda Java 8.JavaScript (ES6), 138 bajtów
Próbowałem użyć
replace
„bardziej fantazyjnego”.Tworzy to anonimową funkcję, która zwraca ciąg typu.
Wszelkie wskazówki, jak to poprawić, będą mile widziane.
źródło
1.
powinno byćST
, nieUD
. Zmień\d*
na\d+
1.0
.1.
zamiast tego nie piszę1
) ALE To nie jest twój wybór ani mój: istnieją przypadki testowePython 3.5 -
241240 bajtów:( Zapisano 1 bajt dzięki @CatsAreFluffy )
To może być trochę długie, ale spełnia swoją rolę prawie idealnie. To był naprawdę dobry sposób na poprawę moich umiejętności regularnego wyrażania. Dzięki za wyzwanie. :) Spróbuję skrócić go bardziej, jeśli będę mógł.
źródło
len(d)>0
==d>[]
Tcl 414 bajtów
implementacja bez golfa, czytelna:
źródło