Desafio
Dada a fórmula de um produto químico, produza o M r do composto.
Equação
Cada elemento do composto é seguido por um número que indica o número do referido átomo no composto. Se não houver um número, existe apenas um desse átomo no composto.
Alguns exemplos são:
- O etanol (C 2 H 6 O) seria
C2H6O
onde existem dois átomos de carbono, 6 átomos de hidrogênio e 1 átomo de oxigênio - Hidróxido de magnésio (MgO 2 H 2 ) seria
MgO2H2
onde existe um átomo de magnésio, dois átomos de oxigênio e dois átomos de hidrogênio.
Observe que você nunca precisará lidar com colchetes e cada elemento é incluído apenas uma vez na fórmula.
Embora a maioria das pessoas provavelmente atenha à ordem com a qual se sente mais confortável, não existe um sistema de pedidos rigoroso. Por exemplo, a água pode ser dada como H2O
ou OH2
.
M r
Nota: Aqui, suponha que a massa da fórmula seja igual à massa molecular
O Mr de um composto, a massa molecular, é a soma dos pesos atômicos dos átomos na molécula.
Os únicos elementos e seus pesos atômicos com uma casa decimal que você precisa suportar (hidrogênio e cálcio, sem incluir gases nobres) são os seguintes. Eles também podem ser encontrados aqui
H - 1.0 Li - 6.9 Be - 9.0
B - 10.8 C - 12.0 N - 14.0
O - 16.0 F - 19.0 Na - 23.0
Mg - 24.3 Al - 27.0 Si - 28.1
P - 31.0 S - 32.1 Cl - 35.5
K - 39.1 Ca - 40.1
Você sempre deve fornecer a saída com uma casa decimal.
Por exemplo, etanol ( C2H6O
) tem uma M r de 46.0
como é a soma das massas atómicas dos elementos nele:
12.0 + 12.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 16.0
(2*C + 6*H + 1*O)
Entrada
Uma única sequência no formato acima. Você pode garantir que os elementos incluídos na equação sejam símbolos elementares reais.
Não é garantido que o composto fornecido exista na realidade.
Resultado
O total Mr do composto, com 1 casa decimal.
Regras
Construções que acessam elementos ou dados químicos não são permitidas (desculpe Mathematica)
Exemplos
Input > Output
CaCO3 > 100.1
H2SO4 > 98.1
SF6 > 146.1
C100H202O53 > 2250.0
Ganhando
O código mais curto em bytes vence.
Este post foi adotado com permissão de caird coinheringaahing . (Postagem excluída)
NumberForm[#&@@#~ChemicalData~"MolecularMass",{9,1}]&
2H2O
:?