Sua tarefa é pegar uma sequência que contenha um isótopo de um elemento como entrada, codificada como o exemplo a seguir com o número atômico seguido por um espaço e o símbolo químico IUPAC para o elemento:
162 Dy
e retorne o número de nêutrons em um átomo desse isótopo.
No exemplo acima, o disprósio-162 possui 96 nêutrons (162 nucleons totais, menos 66 prótons porque é disprósio), portanto a saída deve ser 96
.
Você pode supor que o elemento fornecido será um dos 114 elementos atualmente nomeados permanentemente pelo IUPAC (incluindo flerovium e livermorium) e não um nome genérico como Uus
"ununseptium". Você também pode supor que o número atômico do isótopo não exceda 1000 ou seja menor que o número de prótons no elemento.
Você não pode usar built-ins para recuperar dados sobre o número de elementos de prótons ou nêutrons, ou usar qualquer função em seu código que avalie uma string ou um token de número como código por si só.
O programa para usar o menor número de tokens para fazer isso em qualquer idioma vence. No entanto, para o objetivo deste desafio, todo caractere em uma string ou um nome de variável convertido em uma string conta como um token.
Lista de elementos e seu número atômico para referência:
fonte
65
um único token ou 2 tokens?f[i_] := {n = ElementData[#[[2]], ToString@"StandardName"] <> ToString[#[[1]]], IsotopeData[n, "NeutronNumber"]} &[i]
Respostas:
CJam,
1206 ou 116 tokensSe os números são de token único, temos o código inteiro como 6 tokens:
onde os tokens estão
Este código é equivalente ao código abaixo, que contém a versão em cadeia do grande número no código acima. Mas devido a uma string, o código abaixo tem 116 tokens:
Tokens (com explicação) são
Para executar a sequência acima, copie o código desse link, pois o SE remove alguns caracteres enquanto carrega a resposta.
Isso também pode ser reduzido para 109 tokens, mas o SE não me permite enviar minha resposta, lançando uma exceção de URI malformada.
A entrada é como
saída é como
A sequência estranha é apenas uma sequência codificada de base que contém todos os nomes IUPAC em seu
Atomic number * 2 - 1
índice.Experimente online aqui
fonte
B
eI
aparecem antes deles.In
.Python 3 com exec, 17 tokens
Python 3 sem exec, 35 tokens
Ruby com eval, 17 fichas
Javascript, 49 tokens
Apenas para ilustrar Count big-ints / symbols / variable como N tokens em atomic-code-golf :)
fonte
eval
eexec
trabalhar contra isso?Javascript, 42 tokens (?)
PS: Onde posso encontrar algum script para contar tokens?
fonte