Módulo:Zona de pruebas/Eloy/Q2

De Wikipedia, la enciclopedia libre
Este módulo no tiene página de documentación[crear]
local p={}

local elemq_ayudante={
     ['per']={2,10,18,36,54,86,118,
              168,218},                 -- Final de cada período
     ['series']=
         { -- Elementos,Artículo,singular,plural
             ['n']={{1,6,7,8,15,16,34},'No metales','no metal','no metales','#A0ffA0'},
             ['g']={{2,10,18,36,54,86,118},'Gas noble','gas noble','gases nobles','#C0FFFF'},
             ['k']={{3,11,19,37,55,87},'Alcalino','metal alcalino','metales alcalinos','#FF6666'},
             ['K']={{4,12,20,38,56,88},'Alcalinotérreo','metal alcalinotérreo','metales alcalinotérreos','#FFDEAD'},
             ['m']={{5,14,32,33,51,52,84},'Metaloide','metaloide','metaloides','#CCCC99'},
             ['h']={{9,17,35,53,85,117},'Halógeno','halógeno','halógenos','#FFFF99'},
             ['p']={{13,31,49,50,81,82,83,
                      113,114,115,116},'Metal del bloque p','metal del bloque p','metales del bloque p','#CCCCCC'},
             ['t']={{21,22,23,24,25,26,27,28,29,30,39,40,41,42,43,44,45,46,
                      47,48,72,73,74,75,76,77,78,79,80,104,105,106,107,108,
                      109,110,111,112},'Metal de transición','metal de transición','metales de transición','#FFC0C0'},
             ['l']={{57,58,59,60,61,62,63,64,
                      65,66,67,68,69,70,71},'Lantánido','lantánido','lantánidos','#FFBFFF'},
             ['a']={{89,90,91,92,93,94,95,96,97,
                      98,99,100,101,102,103},'Actínido','actínido','actínidos','#FF99CC'},
         },
     ['series_inv']='ngkKmnnnhgkKpmnnhgkKttttttttttpmmnhgkKttttttttttppmmhgkKllllllllllllllltttttttttpppmhgkKaaaaaaaaaaaaaaatttttttttpppphg????????????????????',
    }
    
-- Obtiene datos del elemento
function p.elemq(Z)
    local elem={['Z']=Z}
    local cod=string.char(elemq_ayudante.series_inv:byte(Z) or 63)
    if not (nil == cod) then
        local ser=elemq_ayudante.series[cod]
        elem['serie']={['código']=cod,['artículo']=ser[2],['singular']=ser[3],['plural']=ser[4]}
    end
    for p,n in pairs(elemq_ayudante.per) do
        elem['período']=p
        if(Z<=n) then break end -- Por ejemplo, si Z es 3: cuando n=2 (p=1),Z no es <=n (3 no es <=2), cuando n=10 (p=2), Z<=n (3<=10) y termina.
    end
    return elem
end

-- Usada para crear elemq_ayudante.series_inv al modificar elemq_ayudante.series
function p.inv()
    local t={}
    for i=1,138 do t[i]='?' end
    for nm,serie in pairs(elemq_ayudante.series) do
        for _,i in pairs(serie[1]) do
            t[i]=nm
        end
    end
    return table.concat(t)
end

return p