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(trueoufalse, 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.