Na física atômica e na química quântica , a configuração eletrônica é a distribuição dos elétrons de um átomo nos orbitais atômicos . Por exemplo, a configuração eletrônica do átomo de néon é 1s 2 2s 2 2p 6 . (Da Wikipedia )
Desafio
Seu desafio é pegar um número representando o número atômico de um elemento e emitir a configuração eletrônica desse elemento, conforme definido pelo princípio de Aufbau .
O ferro (26) tem a configuração eletrônica . No entanto, sobrescritos são desnecessários; a saída para 26 deve estar na linha de .1s2 2s2 2p6 3s2 3p6 3d6 4s2
1s2 2s2 2p6 3s2 3p6 3d6 4s2
Especificação
- Você não precisa manipular nenhuma entrada fora do intervalo
1 <= n <= 118
. - Sua saída deve ser algo como os casos de teste, mas você pode usar qualquer não-dígito de caracteres / caracteres (além de
s
,p
,d
, ef
) para delimitar as diferentes orbitais. - Você deve retornar / imprimir uma sequência contendo os nomes / valores / eliminadores orbitais; você não pode simplesmente devolver / imprimir uma matriz.
- Você não precisa lidar com nenhuma exceção ao princípio Aufbau; onde houver exceções, a impressão da configuração "incorreta" é boa.
Exemplos:
Input -> Valid output -> Invalid output
16 -> 1s2 2s2 2p6 3s2 3p4 -> 1s22s22p63s23p4
16 -> 1s2, 2s2, 2p6, 3s2, 3p4 -> [[1, 2], [2, 2], [2, 6], [3, 2], [3, 4]]
17 -> 1s2+2s2+2p6+3s2+3p5 -> 1s2s2s2s2p6p3s2s3p5
Aqui está uma lista de todos os orbitais eletrônicos. Os valores máximos que eles podem conter estão abaixo do nome:
name: 1s 2s 2p 3s 3p 3d 4s 4p 4d 5s 5p 4f 5d 6s 6p 5f 6d 7s 7p
max: 2 2 6 2 6 10 2 6 10 2 6 14 10 2 6 14 10 2 6
Casos de teste
Input -> Output
1 -> 1s1
2 -> 1s2
16 -> 1s2 2s2 2p6 3s2 3p4
50 -> 1s2 2s2 2p6 3s2 3p6 3d10 4s2 4p6 4d10 5s2 5p2
115 -> 1s2 2s2 2p6 3s2 3p6 3d10 4s2 4p6 4d10 5s2 5p6 4f14 5d10 6s2 6p6 5f14 6d10 7s2 7p3
Aqui está uma lista completa e uma implementação de referência das sortes ( Experimente online! )
Condição vencedora
Como se trata de código-golfe , o código mais curto vence!
3d
parece ser preenchido antes4s
,4d
antes5s
,6s
depois4f
e5d
que violam a regra Madelung . Devemos jogar programas que imprimem as configurações eletrônicas incorretas na pasta?4s1 3d5
vez de4s2 3d4
). Vejo que foi solicitado na postagem da sandbox, mas nunca foi respondido. Ignoramos esse problema?Respostas:
Geléia ,
63 62 5655 bytesExperimente online!
Agradecemos a user202729 por salvar 6 bytes com descompressão de base!
Explicação
Primeiro eu construo a lista
[[1,2,2,3,3,3,4,4,4,5,5,4,5,6,6,5,6,7,7],'sspspdspdspfdspfdsp']
com o código“ŒµḊuÆẓƙỊ’D,“çƥ÷£ḟ’ṃ“spdf”¤
no segundo link.“ŒµḊuÆẓƙỊ’
é o número1223334445545665677
compactado na base 250.D
transforma isso em uma lista de dígitos.“çƥ÷£ḟ’ṃ“spdf”
muda o número da base 250“çƥ÷£ḟ’
para a base 4 e índices de TI para a cadeia“spdf”
dando origem'sspspdspdspfdspfdsp'
. Isso foi contribuído por user202729.A lista é então levada para o primeiro link por
Ç
. O primeiro link faz o seguinte:Agora, de volta ao segundo link. Com
xÇ
repetimos cada um dos elementos em cada sub-lista[[1,2,2,3...7],['sspspd...p']]
pelos números da nossa nova lista[2,2,6...]
. Isso produz[[1,1,2,2,2,2...],['sssspp...']]
.Z
fecha a sub-lista que produz[[1,'s'],[1,'s'],[2,'s']...]
.Agora, para o link principal.
¢
chama o segundo link que gera a lista final de tuplas descritas acima. Suponha que a entrada para o programa seja 5 como exemplo.fonte
sspspdspd...
string?“çƥ÷£ḟ’ṃ“spdf”¤
por -6 bytes. Utilizado este para a base 250 inteiro eṃ
para descompressão base.Tampio imperativo , 930 bytes
Versão online
É uma implementação muito simples. Na versão golfed eu simplesmente substituiu as palavras com palavras curtas, como
ilo
,yö
,iso
,oma
, etc.Ungolfed:
Versão online
Tradução:
A tradução é aproximada, tive que mudar a ordem das palavras para tornar o inglês mais natural.
fonte
Python 2 ,
129128 bytes-1 byte graças a notjagan
Experimente online!
fonte
Carvão , 72 bytes
Experimente online!
Aqui você tem a versão detalhada .
fonte
JavaScript (ES6), 102 bytes
Casos de teste
Mostrar snippet de código
Formatado e comentado
fonte
Swift ,
177175156 bytesBasicamente baseado na resposta Javascript de @ Arnauld
Experimente online!
Sem os espaços nos grupos de elétrons,
190187169 bytes:Experimente online!
fonte
C (GCC),
260187167156152147143138 bytesExperimente online! Golfed a partir da implementação de referência.
StackExchange remove os não imprimíveis, portanto, o valor de
m
é substituído por"..."
.Aqui está um hexdump reversível do programa, já que ele usa não imprimíveis em uma string, que substitui a matriz inteira
{2,2,6,2,6,10,2,6,10,2,6,14,10,2,6,14,10,2,6}
pelos valores literais de bytes dos inteiros.Como alternativa, você pode simplesmente copiar o código do link TIO.
fonte