O desafio é simples: determine o tipo de uma entrada e envie um identificador informando que tipo é.
- "UI", inteiro não assinado:
0
,1
,34
,111111111111111111111111111111111111111111
- "SI", assinado inteiro:
+0
,+1
,+42
,-1
,-3
,-111111111111111111111111111111111111111111
- "UD", decimal não assinado:
0.0
,1.23
,1234.1234
- "SD", assinado decimal:
-0.0
,+0.0
,-1.235
- "LE", Carta:
a
-z
eA
-Z
- "SY", símbolo: pontos de código ASCII:
[32-47, 58-64, 91-96, 123-126]
(ou seja, todos os caracteres, exceto números e letras) - "ST", String: dois ou mais caracteres que não podem ser analisados como qualquer um dos formatos numéricos acima
Regras:
- A entrada terá de 1 a 99 caracteres
- A entrada conterá apenas caracteres ASCII imprimíveis, pontos de código: 32-126.
- A saída deve ser as duas letras identificadoras, conforme definido acima (UI, SI ...)
- Aplicam-se as regras de E / S padrão
Exemplos:
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
haver mais de um personagem?111111111111111111111111111111111111111111
ser do tipo inteiro.uint8
ouint64
, mas é definitivamente um número inteiro .Respostas:
Pitão - 47 bytes
Você pode jogar golfe alguns bytes com alguns truques de fatiar.
Conjunto de Teste .
fonte
JavaScript (ES6), 99
Teste
fonte
(\+|-)
, mas não bytes salvosCódigo da máquina de Turing, 1544 bytes
Experimente online!
fonte
Retina,
9897 bytesUma boa maneira de praticar minhas habilidades regex de fato.
Experimente online!
fonte
^[a-zA-Z]$
parai`^[a-z]$
salvar um byteLua, 157 bytes
Experimente online!
Golfe:
Ungolfed:
fonte
JavaScript (ES6),
125120 bytesVersão alternativa, também 120 bytes:
fonte
eval(`/regex/`)
cordas modelo construtor +Java, 192 bytes
fonte
return (v.length()==1?"SY":"ST");
pode serreturn v.length()<2?"SY":"ST";
(-3 bytes) Ou pode ser isso: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 ) Além disso, você pode mudarString t(String v)
parav->
quando usa um Java 8 lambda.Javascript (ES6), 138 bytes
Eu tentei usar um
replace
para ser mais "chique".Isso cria uma função anônima que retorna a sequência do tipo.
Qualquer dica para melhorar isso será totalmente bem-vinda.
fonte
1.
deveria serST
, nãoUD
. Altere\d*
para\d+
1.0
.1.
em vez de1
) mas não é a sua escolha ou a minha: há os casos de testePython 3.5 -
241240 bytes:( Salvo 1 byte graças a @CatsAreFluffy )
Pode demorar um pouco, mas faz o trabalho perfeitamente. Essa foi realmente uma boa maneira de melhorar minhas habilidades de expressão regular. Obrigado pelo desafio. :) Vou tentar encurtar mais se puder.
fonte
len(d)>0
==d>[]
Tcl 414 Bytes
implementação ungolfed, legível:
fonte