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:
65to pojedynczy token, czy 2 tokeny?
f[i_] := {n = ElementData[#[[2]], ToString@"StandardName"] <> ToString[#[[1]]], IsotopeData[n, "NeutronNumber"]} &[i]