ИЮПАК в своей невыносимой мудрости создал систематическое название элемента для любого вновь созданного элемента. Это временное имя элемента, пока они, наконец, не примут решение о действительном имени. Это работает так: каждой цифре номера элемента присваивается префикс в зависимости от его значения. Префиксы объединяются с 'ium' в конце. Когда это будет сделано, и если вы получите двойные i (ii) или тройные n (nnn), замените их на одинарные i и двойные n. Символом для элемента является первая буква каждого используемого префикса, конкатенированная и результат с заглавной буквы. Используемые префиксы приведены ниже.
0 nil 5 pent
1 un 6 hex
2 bi 7 sept
3 tri 8 oct
4 quad 9 enn
Поэтому для этого гольфа ваш код должен генерировать как имя элемента, так и его символ для заданного положительного целого числа. Так что, если вашему коду был присвоен 137, он должен вывести на стандартный вывод или вернуть оба untriseptium
и Uts
. Он должен быть действителен от 118 до 558 . Любое значение выше, если оно не увеличивает длину вашего кода.
Пример Python, показывающий метод:
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
Эрик Тауэрс побеждает с кадмиевыми байтами!