IUPAC en su sabiduría insufrible ha creado un nombre de elemento sistemático para cualquier elemento recién creado. Este es el nombre temporal de un elemento hasta que finalmente deciden acerca de un nombre real. Funciona así: a cada dígito de un número de elemento se le asigna un prefijo en función de su valor. Los prefijos se concatenan con 'ium' al final. Cuando se hace esto y si obtiene dobles i's (ii) o triples n's (nnn), reemplácelos con single i's y double n's. El símbolo para el elemento es la primera letra de cada prefijo utilizado concatenado y resultado en mayúscula. Los prefijos utilizados están a continuación.
0 nil 5 pent
1 un 6 hex
2 bi 7 sept
3 tri 8 oct
4 quad 9 enn
Entonces, para este golf, su código necesita generar tanto el nombre del elemento como su símbolo para un entero positivo dado. Entonces, si su código recibió 137, debería imprimirse en stdout o devolver ambos untriseptium
y Uts
. Debe ser válido desde al menos 118 a 558 . Cualquier valor superior es válido si no aumenta la longitud de su código.
Ejemplo de Python que muestra el método:
def elename(n):
'''Return name and symbol of new element for given element number.'''
prefixes=['nil','un','bi','tri','quad','pent','hex','sept','oct','enn']
nmeFixes, symFixes = [], []
while n: # each digit of element number is assigned a prefix
n, i = divmod(n, 10)
pf = prefixes[i]
symFixes.append(pf[0]) # symbol uses only first letter of prefix
nmeFixes.append(pf)
# loop assembled prefixes in reverse order
nmeFixes.reverse()
symFixes.reverse()
nmeFixes.append('ium') # suffix
name = ''.join(nmeFixes)
symb = ''.join(symFixes).capitalize()
# apply rule about too many n's or i's
name = name.replace('nnn','nn') # can happen with -90-
name = name.replace('ii','i') # -2ium or -3ium
return name, symb
Eric Towers gana con bytes de cadmio!