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:
źródło
65
to pojedynczy token, czy 2 tokeny?f[i_] := {n = ElementData[#[[2]], ToString@"StandardName"] <> ToString[#[[1]]], IsotopeData[n, "NeutronNumber"]} &[i]
Odpowiedzi:
CJam,
1206 lub 116 żetonówJeśli liczby są jednym tokenem, mamy cały kod jako 6 tokenów:
gdzie są tokeny
Ten kod jest równoważny poniższemu kodowi zawierającemu łańcuchową wersję dużej liczby w powyższym kodzie. Ale z powodu ciągu poniższy kod ma 116 tokenów:
Tokeny (z wyjaśnieniem) są
Aby uruchomić powyższy ciąg, skopiuj kod z tego linku, ponieważ SE usuwa niektóre znaki podczas przesyłania odpowiedzi.
Można to również zredukować do 109 tokenów, ale wtedy SE nie pozwoli mi przesłać mojej odpowiedzi, wyrzucając zniekształcony wyjątek URI.
Wejście idzie jak
wyjście jest jak
Dziwny ciąg jest po prostu zakodowanym ciągiem zawierającym wszystkie nazwy IUPAC w
Atomic number * 2 - 1
indeksie.Wypróbuj online tutaj
źródło
B
iI
pojawiają się przed nimi.In
.Python 3 z exec, 17 tokenów
Python 3 bez exec, 35 tokenów
Rubinowy z eval, 17 żetonów
JavaScript, 49 tokenów
Tylko dla zilustrowania Policz big-ints / symbole / zmienne jako tokenów N w atomowym kodzie golfowym :)
źródło
eval
iexec
działa przeciwko temu?JavaScript, 42 tokeny (?)
PS: Gdzie mogę znaleźć skrypt do liczenia tokenów?
źródło