Tarefa
Escreva um programa que absorva um composto composto apenas de elementos com um número atômico menor ou igual a 92 (Urânio) e produz a massa molar do composto em grams/mole.
Regras e Restrições
- Você não pode usar uma função que calcule diretamente massas molares para você.
- Seu programa deve ser capaz de executar em uma máquina offline.
- Você pode usar um arquivo de dados separado. O conteúdo deste arquivo deve ser fornecido.
- Sua pontuação é o comprimento do seu programa em bytes, mais o tamanho do seu arquivo de dados em bytes, se você optar por usá-lo.
- Este é o código-golfe , portanto, a pontuação mais baixa vence.
Entrada
Uma sequência contendo o composto. Essa string pode ser lida STDIN, passada como argumento ou definida como uma variável (especifique qual). A seguir estão todas as entradas válidas:
CH2(um carbono, dois hidrogênios)(CH2)8(8 carbonos, 16 hidrogênios)U(1 urânio)
Não é necessário que o seu programa funcione entre parênteses incorporados (ie ((CH3)2N4)4) nem em qualquer composto que contenha um elemento com número atômico maior que 92. Se o seu programa não funcionar em nenhum dos dois casos acima, ele deve gerar saída Invalid formulapara esses casos - nenhum comportamento indefinido.
Resultado
Você deve produzir, para STDOUTou para uma variável, a massa molar do composto em grams/mole. Uma lista de massas atômicas de elementos está disponível aqui (Wikipedia) . Sua resposta deve ser precisa com a casa decimal para compostos que contenham menos de 100 átomos (arredondado).
Se a entrada for inválida, Invalid formuladeve ser emitida.
Informações sobre o cálculo da massa molar de um composto em grams/mole(Wikipedia).
Exemplos
Input Output
H2O 18.015
O 15.999 (16 acceptable)
C6H2(NO2)3CH3 227.132
FOOF 69.995
C6H12Op3 Invalid formula
Np 237 (or Invalid formula)
((C)3)4 144.132 (or Invalid formula)
CodeGolf Invalid formula
13se a massa atômica é 12.999?
U1000000é mais difícil determinar até o ponto decimal do que a massa deU2