El desafío es simple: determinar el tipo de entrada y generar un identificador que indique de qué tipo es.
- "UI", número entero sin signo:
0
,1
,34
,111111111111111111111111111111111111111111
- "SI", firmado entero:
+0
,+1
,+42
,-1
,-3
,-111111111111111111111111111111111111111111
- "UD", Decimal sin signo:
0.0
,1.23
,1234.1234
- "SD", decimal con signo:
-0.0
,+0.0
,-1.235
- "LE", Carta:
a
-z
yA
-Z
- "SY", símbolo: puntos de código ASCII:
[32-47, 58-64, 91-96, 123-126]
(es decir, todos los caracteres excepto números y letras) - "ST", cadena: dos o más caracteres que no se pueden analizar como ninguno de los formatos de números anteriores
Reglas:
- La entrada tendrá 1-99 caracteres de longitud.
- La entrada solo contendrá caracteres ASCII imprimibles, puntos de código: 32-126.
- La salida debe ser las dos letras de identificación como se definió anteriormente (UI, SI ...)
- Aplican reglas estándar de E / S
Ejemplos:
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
ser más de un personaje?111111111111111111111111111111111111111111
ser de tipo entero.uint8
oint64
, pero definitivamente es un número entero .Respuestas:
Pyth - 47 bytes
Puede jugar al golf unos pocos bytes con algunos trucos de corte.
Test Suite .
fuente
JavaScript (ES6), 99
Prueba
fuente
(\+|-)
pero no se guardaron bytesCódigo de máquina de Turing, 1544 bytes
Pruébalo en línea!
fuente
Retina,
9897 bytesUna buena manera de practicar mis habilidades de expresiones regulares.
Pruébalo en línea!
fuente
^[a-zA-Z]$
parai`^[a-z]$
guardar un byteLua, 157 bytes
Pruébalo en línea!
Golfizado:
Sin golf:
fuente
JavaScript (ES6),
125120 bytesVersión alternativa, también 120 bytes:
fuente
eval(`/regex/`)
constructor de expresiones regulares + cadenas de plantillaJava, 192 bytes
fuente
return (v.length()==1?"SY":"ST");
puede serreturn v.length()<2?"SY":"ST";
(-3 bytes) O puede ser esto: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 bytes ) Y además, puede cambiarString t(String v)
av->
cuando usa un lambda Java 8.Javascript (ES6), 138 bytes
Traté de usar a
replace
para ser más "elegante".Esto crea una función anónima que devuelve la cadena del tipo.
Cualquier consejo para mejorar esto será totalmente bienvenido.
fuente
1.
debería serST
, noUD
. Cambie su\d*
a\d+
1.0
.1.
lugar de1
) PERO No es su elección ni la mía: existen los casos de pruebaPython 3.5 -
241240 bytes:( Guardado 1 byte gracias a @CatsAreFluffy )
Puede ser un poco largo, pero hace el trabajo casi a la perfección. Esta fue una muy buena manera de mejorar mis habilidades de expresión regular. Gracias por el reto. :) Intentaré acortarlo más si puedo.
fuente
len(d)>0
==d>[]
Tcl 414 bytes
Implementación sin golf, legible:
fuente