Um composto iônico é chamado assim: (metal name) (non-metal suffixed with -ide)
. Aqui está uma lista de todos os sufixos que precisam ser substituídos por -ide
:
-on -ogen -ygen -ine -orus -ur -ic -ium
O número de átomos de cada elemento no composto não é usado para nomear compostos iônicos. Ignore as regras de nomes de metal multivalentes.
NaCl -> sodium + chlorine -> sodium chloride.
K2S -> potassium + sulphur -> potassium sulphide (or sulfide).
Yb2P3 -> ytterbium + phosphorus -> ytterbium phosphide.
PbTe2 -> lead + tellurium -> lead telluride.
Uma cadeia de caracteres contendo um composto iónico ( NaCl
, K2S
, Yb2P3
) vai ser dado como entrada. Nenhum íon poliatômico será fornecido. O programa deve exibir o nome desse composto.
Como ninguém quer compilar os dados da tabela periódica-se, aqui é uma pasta que tem o nome, símbolos e se é ou não é um metal de cada elemento, nesta ordem: (name) (symbol) (is metal?)
. Você pode salvar isso em um arquivo externo (o tamanho do arquivo não será contado) ou pode armazenar os dados em seu programa (basta descontar o comprimento dessa string a partir daí). Talvez você não precise de todas as informações fornecidas. Cada elemento é separado por uma nova linha.
Como sempre, com os desafios do código de golfe, o menor código vence.
sodium chloride
,potassium sulide
,ytterbium phosphoride
elead telluriide
.Respostas:
Ruby, 114
Usa uma colagem do texto do elemento que não contei na pontuação. Eu removo a etiqueta de metal (já que estou assumindo que os compostos são sempre fornecidos com o metal primeiro, então não preciso dele) e construo um dicionário com ele. Eu identifico a parte a ser substituída por "ide", verificando o final da string em busca de três letras começando com
i
, quatro letras terminando comgen
, ou apenas os dois últimos caracteres.fonte
Python, 134 caracteres.
fonte
APL
142150Se eu tiver permissão para armazenar os nomes e símbolos dos elementos em um par de matrizes aninhadas no espaço de trabalho da APL, o seguinte código deverá fazê-lo:
Funciona aproximadamente da seguinte maneira:
Pega a entrada da tela via ⍞ e divide o nome do produto químico em símbolos e descarta qualquer número
e [s⍳c [1]]
Procura o primeiro nome do elemento a partir do seu símbolo. Da mesma forma para c [2]
Identifica qual das oito terminações possíveis o não-metal possui e descarta e depois o substitui por ide via:
Não há interceptação de erro, portanto, funciona apenas para compostos válidos ditados pelo identificador de um ou zero na lista de elementos fornecidos.
fonte
oxygen -> oxide
ouhydrogen -> hydride
trabalha?Mathematica
252 267254Código
ElementData[]
contém informações sobre os elementos; é nativo do Mathematica.Exemplos
Explicação
O código remove os dígitos do composto e separa os elementos por seus nomes abreviados. Em seguida, converte as abreviações nos nomes padrão dos elementos. Por fim, substitui o não-metal pelo termo pelo sufixo correto.
fonte
PbTe2
,lead telluride
será suficiente.