Twoim zadaniem jest pobranie ciągu zawierającego izotop pierwiastka jako danych wejściowych, kodowanego jak w poniższym przykładzie z liczbą atomową, po której następuje spacja i symbol chemiczny IUPAC dla elementu:
162 Dy
i zwraca liczbę neutronów w atomie tego izotopu.
W powyższym przykładzie dysprosium-162 ma 96 neutronów (162 nukleonów ogółem, minus 66 protonów, ponieważ jest to dysprosium), więc wynik powinien być 96
.
Możesz założyć, że podany element będzie jednym ze 114 elementów, którym IUPAC nadał obecnie stałe nazwy (w tym flerovium i livermorium), a nie nazwą ogólną, taką jak Uus
„ununseptium”. Możesz również założyć, że liczba atomowa izotopu nie przekroczy 1000 lub będzie mniejsza niż liczba protonów w elemencie.
Nie możesz używać wbudowanych funkcji do pobierania danych o liczbie protonów lub neutronów, ani też korzystać z dowolnej funkcji w kodzie, która ocenia łańcuch lub token liczbowy jako kod samodzielnie.
Wygrywa program używający najmniejszej liczby tokenów w dowolnym języku. Jednak na potrzeby tego wyzwania każdy znak w ciągu lub nazwa zmiennej przekonwertowana na ciąg liczy się jako token.
Lista pierwiastków i ich liczba atomowa w celach informacyjnych:
65
to pojedynczy token, czy 2 tokeny?
f[i_] := {n = ElementData[#[[2]], ToString@"StandardName"] <> ToString[#[[1]]], IsotopeData[n, "NeutronNumber"]} &[i]