Wide Periodic Table by slw

import Data.List
main=putStrLn t
t=a 1#z#a 1#n#f[1]#z#f[2]#n#"| He|"#z#"| H |"#b#f[3,4]#y#f[5..10]#n#"| Li| Be|"#y#"| B | C | N | O | F | Ne|"#b#f[11,12]#y#f[13..18]#n#"| Na| Mg|"#y#"| Al| Si| P | S | Cl| Ar|"#c#f[19,20]#x#f[21..36]#n#"| K | Ca|"#x#"| Sc| Ti| V | Cr| Mn| Fe| Co| Ni| Cu| Zn| Ga| Ge| As| Se| Br| Kr|"#c#f[37,38]#x#f[39..54]#n#"| Rb| Sr|"#x#"| Y | Zr| Nb| Mo| Tc| Ru| Rh| Pd| Ag| Cd| In| Sn| Sb| Te| I | Xe|"#d#f[55..86]#n#"| Cs| Ba| La| Ce| Pr| Nd| Pm| Sm| Eu| Gd| Tb| Dy| Ho| Er| Tm| Yb| Lu| Hf| Ta| W | Re| Os| Ir| Pt| Au| Hg| Tl| Pb| Bi| Po| At| Rn|"#d#f[87..118]#n#"| Fr| Ra| Ac| Th| Pa| U | Np| Pu| am| Cm| Bk| Cf| Es| Fm| Md| No| Lr| Rf| Db| Sg| Bh| Hs| Mt| Ds| Rg| Cn|Uut|Uuq|Uup|Uuh|Uus|Uuo|"#d
z=s 119
y=s 95
x=s 55
b=l#y#a 6#n
c=l#x#a 16#n
l=n#a 2
d=n#a 32#n
s x=replicate x ' '
a 0="+"
a n=(#)"+---"$a$n-1
(#)=(++)
n="\n"
f x=concatMap m x#"|"
m n="|"++s(3-(length a))#a
 where a=show n

Note that non-ascii characters in the above source code will be escaped (such as \x9f).

download

return to the top page