En physique atomique et en chimie quantique , la configuration électronique est la distribution des électrons d'un atome dans les orbitales atomiques . Par exemple, la configuration électronique de l'atome de néon est 1s 2 2s 2 2p 6 . (De Wikipedia )
Défi
Votre défi est de prendre un nombre représentant le numéro atomique d'un élément et de sortir la configuration électronique de cet élément telle que définie par le principe d'Aufbau .
Le fer (26) a la configuration électronique . Cependant, les exposants ne sont pas nécessaires; la sortie pour 26 devrait être dans le sens de .1s2 2s2 2p6 3s2 3p6 3d6 4s2
1s2 2s2 2p6 3s2 3p6 3d6 4s2
spécification
- Vous ne devez gérer aucune entrée en dehors de la plage
1 <= n <= 118
. - Votre sortie doit ressembler à quelque chose comme les cas de test, mais vous pouvez utiliser des caractères non-chiffres / caractères ( à part
s
,p
,d
etf
) pour délimiter les différentes orbitales. - Vous devez renvoyer / imprimer une chaîne contenant les noms / valeurs / délimiteurs orbitaux; vous ne pouvez pas simplement retourner / imprimer un tableau.
- Vous n'avez pas besoin de gérer d'exceptions au principe Aufbau; là où il y a des exceptions, l'impression de la configuration "incorrecte" est correcte.
Exemples:
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
Voici une liste de toutes les orbitales électroniques. Les valeurs maximales qu'ils peuvent contenir sont inférieures au nom:
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
Cas de test
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
Voici une liste complète et une sorte d' implémentation de référence ( Essayez-le en ligne! )
Condition gagnante
Comme il s'agit de code-golf , le code le plus court gagne!
3d
semble être rempli avant4s
,4d
avant5s
,6s
après4f
et5d
, qui violent la règle Madelung . Faut-il des programmes de golf qui impriment les configurations d'électrons incorrectes sur la boîte à pâte?4s1 3d5
au lieu de4s2 3d4
). Je vois que cela a été demandé dans le post sandbox mais n'a jamais été répondu. Ignorons-nous ce problème?Réponses:
Gelée ,
63 62 5655 octetsEssayez-le en ligne!
Merci à user202729 pour avoir économisé 6 octets avec la décompression de base!
Explication
Je construis d'abord la liste
[[1,2,2,3,3,3,4,4,4,5,5,4,5,6,6,5,6,7,7],'sspspdspdspfdspfdsp']
avec le code“ŒµḊuÆẓƙỊ’D,“çƥ÷£ḟ’ṃ“spdf”¤
dans le deuxième lien.“ŒµḊuÆẓƙỊ’
est le nombre1223334445545665677
compressé en base 250.D
donne transforme cela en une liste de chiffres.“çƥ÷£ḟ’ṃ“spdf”
change le nombre de base 250“çƥ÷£ḟ’
en base 4 et l'indexe dans la chaîne“spdf”
donnant'sspspdspdspfdspfdsp'
. Cela a été fourni par user202729.La liste est ensuite prise au premier lien par
Ç
. Le premier lien fait ce qui suit:Revenons maintenant au deuxième lien. Avec
xÇ
nous répétons chacun des éléments de chaque sous-liste[[1,2,2,3...7],['sspspd...p']]
par les numéros de notre nouvelle liste[2,2,6...]
. Cela donne[[1,1,2,2,2,2...],['sssspp...']]
.Z
zippe les deux sous-listes qui cèdent[[1,'s'],[1,'s'],[2,'s']...]
.Passons maintenant au lien principal.
¢
appelle le deuxième lien qui donne la liste finale des tuples décrite ci-dessus. Supposons que l'entrée du programme soit 5 à titre d'exemple.la source
sspspdspd...
chaîne?“çƥ÷£ḟ’ṃ“spdf”¤
pour -6 octets. Utilisé ce pour entier à base de 250 etṃ
pour la décompression base.Tampio impératif , 930 octets
Version en ligne
Il s'agit d'une implémentation très simple. Dans la version golfed je simplement remplacé les mots avec des mots courts comme
ilo
,yö
,iso
,oma
, etc.Non golfé:
Version en ligne
Traduction:
La traduction est approximative, j'ai dû changer l'ordre des mots pour rendre l'anglais plus naturel.
la source
Python 2 ,
129128 octets-1 octet grâce à notjagan
Essayez-le en ligne!
la source
Fusain , 72 octets
Essayez-le en ligne!
Voici la version détaillée .
la source
JavaScript (ES6), 102 octets
Cas de test
Afficher l'extrait de code
Formaté et commenté
la source
Swift ,
177175156 octetsLibrement basé sur la réponse Javascript de @ Arnauld
Essayez-le en ligne!
Sans les espaces dans les groupes d'électrons,
190187169 octets:Essayez-le en ligne!
la source
C (gcc),
260187167156 156152147143138 octetsEssayez-le en ligne!Golfé depuis l'implémentation de référence.
StackExchange supprime les non imprimables, donc la valeur de
m
est remplacée par"..."
.Voici un hexdump réversible du programme, car il utilise des caractères non imprimables dans une chaîne, qui remplace le tableau d'entiers
{2,2,6,2,6,10,2,6,10,2,6,14,10,2,6,14,10,2,6}
par les valeurs d'octets littéraux des entiers.Alternativement, vous pouvez simplement copier le code à partir du lien TIO.
la source