Dans leur insupportable sagesse, l' IUPAC a créé un nom d'élément systématique pour tout élément nouvellement créé. C'est le nom temporaire d'un élément jusqu'à ce qu'ils se décident enfin du nom réel. Cela fonctionne comme suit: chaque préfixe d'un numéro d'élément se voit attribuer un préfixe en fonction de sa valeur. Les préfixes sont concaténés avec "ium" à la fin. Lorsque cela est fait et si vous obtenez double i (ii) ou triple n (nnn), remplacez-les par simples i et doubles n. Le symbole de l'élément est la première lettre de chaque préfixe utilisé, concaténé et en majuscule. Les préfixes utilisés sont ci-dessous.
0 nil 5 pent
1 un 6 hex
2 bi 7 sept
3 tri 8 oct
4 quad 9 enn
Donc, pour ce golf, votre code doit générer à la fois le nom de l'élément et son symbole pour un entier positif donné. Donc, si votre code a été donné 137, il devrait imprimer sur stdout ou renvoyer les deux untriseptium
et Uts
. Il devrait être valide d'au moins 118 à 558 . Toute valeur supérieure est valable si elle n'augmente pas la longueur de votre code.
Exemple Python montrant la méthode:
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 gagne avec des octets de cadmium!