Ваше завдання - взяти рядок, що містить ізотоп елемента, кодований як наступний приклад з атомним номером з подальшим пробілом та хімічним символом IUPAC для елемента:
162 Dy
і повернути кількість нейтронів в атомі цього ізотопу.
У наведеному вище прикладі диспрозіум-162 має 96 нейтронів (162 загальних нуклонів, мінус 66 протонів, оскільки це диспрозіум), тому вихід повинен бути 96
.
Ви можете припустити, що даний елемент буде одним із 114 елементів, на даний час IUPAC має постійні імена (включаючи флеровіум та печінкорію), а не загальну назву, наприклад, Uus
для "ununseptium". Ви також можете припустити, що атомне число ізотопу не буде перевищувати 1000 або бути меншим за кількість протонів у елементі.
Ви не можете використовувати вбудовані модулі для отримання даних про кількість протонів чи нейтронів, або використовувати будь-яку функцію у вашому коді, яка самостійно оцінює маркер рядка чи числа як код.
Виграє програма, яка використовує найменше лексем для будь-якої мови. Однак для цього завдання кожен символ у рядку або ім'я змінної, перетвореної у рядок, вважається лексемою.
Список елементів та їх атомний номер для довідки:
65
є один маркер або 2 жетони?
f[i_] := {n = ElementData[#[[2]], ToString@"StandardName"] <> ToString[#[[1]]], IsotopeData[n, "NeutronNumber"]} &[i]