import pylab as plt
import numpy as np
import matplotlib as mpl
mpl.rcParams['text.usetex'] = True

##Le gros du calcul
def config(Z) :
    #Fonction pas du tout opti pour placer les Z électrons selon les règles de remplissage
    res = []
    lettre = 'spdfghi'
    somme = 1
    while Z != 0 :
        if somme%2 == 0 :
            n = (somme+2)//2
            l = n-2
        else :
            n = (somme+1)//2
            l = n-1
        while l >= 0 :
            nb_e = 2*(2*l+1)
            if nb_e > Z :
                nb_e = Z 
                Z = 0
                res.append('('+str(n)+lettre[l]+')'+str(nb_e))
                break
            else :
                Z -= nb_e
                res.append('('+str(n)+lettre[l]+')'+str(nb_e))
            l -= 1
            n += 1
        somme += 1
    return res
    
def affichage(Z) :
    #Pour afficher la config électronique en beau LaTeX
    liste = config(Z)
    text=""
    for ele in liste :
        ele1 = ele[0:4]
        ele2 = ele[4:]
        text += r"$\;"+ele1+"^{"+ele2+"}$"
    plt.text(1,6,text,size=40)
    plt.plot(0,0.5)
    plt.xlim(0.5,10)
    plt.ylim(0,12)
    plt.show()
 
##Affichage en LateX
Z = 42
affichage(Z)