Un compuesto iónico se nombra así: (metal name) (non-metal suffixed with -ide)
. Aquí hay una lista de todos los sufijos que deben ser reemplazados por -ide
:
-on -ogen -ygen -ine -orus -ur -ic -ium
El número de átomos de cada elemento en el compuesto no se usa para nombrar compuestos iónicos. Ignora las reglas de nombres de metales multivalentes.
NaCl -> sodium + chlorine -> sodium chloride.
K2S -> potassium + sulphur -> potassium sulphide (or sulfide).
Yb2P3 -> ytterbium + phosphorus -> ytterbium phosphide.
PbTe2 -> lead + tellurium -> lead telluride.
Una cadena que contiene un compuesto iónico ( NaCl
, K2S
, Yb2P3
) se le dará como entrada. No se darán iones poliatómicos. El programa tiene que generar el nombre de este compuesto.
Puesto que nadie quiere recopilar los datos de tabla periódica sí mismos, aquí es una pasta que tiene los nombres, símbolos, y si es o no es un metal de cada elemento, en este orden: (name) (symbol) (is metal?)
. Puede guardar esto en un archivo externo (no se contará la longitud del archivo), o puede almacenar los datos dentro de su programa (simplemente descontar la longitud de esa cadena desde allí). Es posible que no necesite toda la información proporcionada. Cada elemento está separado por una nueva línea.
Como siempre con los desafíos de código de golf, gana el código más corto.
sodium chloride
,potassium sulide
,ytterbium phosphoride
ylead telluriide
.Respuestas:
Rubí, 114
Utiliza una pasta del texto del elemento que no he contado en la partitura. Quito la etiqueta de metal (dado que supongo que los compuestos siempre se dan primero con el metal, por lo que en realidad no lo necesito) y construyo un diccionario con él. Identifico la parte a reemplazar con "ide" comprobando el final de la cadena para tres letras que comienzan con
i
, cuatro letras que terminan congen
, o de lo contrario solo los dos últimos caracteres.fuente
Python, 134 personajes.
fuente
APL
142150Si se me permite almacenar los nombres y símbolos de elementos en un par de matrices anidadas dentro del espacio de trabajo APL, entonces el siguiente código debería hacerlo:
Funciona aproximadamente de la siguiente manera:
Toma la entrada de la pantalla a través de ⍞ y divide el nombre químico en símbolos y descarta cualquier número
e [s⍳c [1]]
Busca el primer nombre del elemento a partir de su símbolo. Del mismo modo para c [2]
Identifica cuál de las ocho posibles terminaciones tiene el no metal y lo suelta y luego lo reemplaza con ide a través de:
No hay captura de errores, por lo que solo funciona para compuestos válidos dictados a través del identificador de uno o cero en la lista de elementos proporcionados.
fuente
oxygen -> oxide
ohydrogen -> hydride
trabaja?Mathematica
252 267254Código
ElementData[]
contiene información sobre los elementos; Es nativo de Mathematica.Ejemplos
Explicación
El código elimina los dígitos del compuesto, luego separa los elementos por sus nombres abreviados. Luego convierte las abreviaturas a los nombres estándar de los elementos. Finalmente, reemplaza el no metal por el término con el sufijo correcto.
fuente
PbTe2
,lead telluride
será suficiente.