Dada uma expressão infix, determine se todas as constantes são do mesmo tipo.
Os operadores consistirão apenas desses operadores diádicos :+-/*
Seu programa ou função deve usar uma string de expressão válida como entrada e gerar um valor verdadeiro se as constantes na expressão forem do mesmo tempo e um valor falsey caso contrário.
A expressão consistirá apenas em constantes e pode conter qualquer um dos seguintes tipos:
- String, no formato
"String"
(Sempre as aspas duplas, podem estar vazias, sem caracteres de escape, podem conter qualquer texto ASCII) - Inteiro, da forma
14
(Sempre positivo ou zero) - Flutuante, na forma
7.3f
(Sempre positivo ou zero, sempre tem um componente decimal, por exemplo14.0f
) - Byte, no formato
0x42
(0-255
, Sempre 2 caracteres hexadecimais) - Booleano, no formato
true
(true
oufalse
, sem distinção entre maiúsculas e minúsculas)
A expressão não conterá parênteses, pois a ordem da operação não afeta o tipo quando não há coerção de tipo.
Uma constante solitária sem operadores é uma expressão válida.
Uma expressão vazia não é uma expressão válida.
Você pode assumir que a cadeia de expressão não contém espaços em branco fora dos literais da cadeia.
Nota: Como alternativa, você pode assumir que sempre haverá espaços entre constantes e operadores, como visto nos casos de teste. Se você fizer essa suposição, especifique como tal em sua resposta
Você não precisa lidar com expressões inválidas, como 1 +
.
Pontuação
Isso é código-golfe , e o menor número de bytes vence!
Casos de teste
(Espaço em branco adicionado para facilitar a leitura)
2 + 3
True
"Hello" / "World"
True
true * false
True
"Hello" + 4
False
"Hello" + "4"
True
3 + 2.4f / 8
False
0xff * 0xff
True
0xff + 2
False
6
True
" " + ""
True
"4 + false" + "word"
True
truE+fALSe
). Caso contrário, posso salvar dois bytes na minha solução.