code = ->(n){%w{Al Am A.s Ar Ac Ant|Sb A.t Ba B..k Be Bi B.h Br B C.+s C.d C.+f Ce C(ar) C....n Ca C....m Cop|Cu Co C.r C.l Dy D.+s D.b E..s Er Eu F..m Fl(e) Fr F G.d Ga Ge G|Au H.f H.s He Ho H In Iro|Fe Ir I Kr L.v L.+r La Li Lu L|Pb M.g Mo M.+d M.n M.+t M|Hg N.+d N.+p Ne N..b N(it) No Ni Os O P..m Pr(a) P.+d P...a P.u P..t Pot|K Po P R.+n$ Ra R.+g R.e Rh R.+b R.+f Ru S.m Sc S.+g Se S..v|Ag Si So|Na S.r S Ta T.c T.+b Te Th(o) T.....m T..l Tin|Sn Ti Tu|W U.u.o U.u.p U.u.s U.u.t U V Xe Y.+b Y Z.n Z.r}.find{|r|/^#{r}/.match(n)}.gsub(/.*\||\(.*|\W/,'')+" "} elements = "Ac Actinium Al Aluminium Am Americium Sb Antimony Ar Argon As Arsenic At Astatine Ba Barium Bk Berkelium Be Beryllium Bi Bismuth Bh Bohrium B Boron Br Bromine Cd Cadmium Cs Caesium Ca Calcium Cf Californium C Carbon Ce Cerium Cl Chlorine Cr Chromium Co Cobalt Cn Copernicium Cu Copper Cm Curium Ds Darmstadtium Db Dubnium Dy Dysprosium Es Einsteinium Er Erbium Eu Europium Fm Fermium Fl Flerovium F Fluorine Fr Francium Gd Gadolinium Ga Gallium Ge Germanium Au Gold Hf Hafnium Hs Hassium He Helium Ho Holmium H Hydrogen In Indium I Iodine Ir Iridium Fe Iron Kr Krypton La Lanthanum Lr Lawrencium Pb Lead Li Lithium Lv Livermorium Lu Lutetium Mg Magnesium Mn Manganese Mt Meitnerium Md Mendelevium Hg Mercury Mo Molybdenum Nd Neodymium Ne Neon Np Neptunium Ni Nickel Nb Niobium N Nitrogen No Nobelium Os Osmium O Oxygen Pd Palladium P Phosphorus Pt Platinum Pu Plutonium Po Polonium K Potassium Pr Praseodymium Pm Promethium Pa Protactinium Ra Radium Rn Radon Re Rhenium Rh Rhodium Rg Roentgenium Rb Rubidium Ru Ruthenium Rf Rutherfordium Sm Samarium Sc Scandium Sg Seaborgium Se Selenium Si Silicon Ag Silver Na Sodium Sr Strontium S Sulfur Ta Tantalum Tc Technetium Te Tellurium Tb Terbium Tl Thallium Th Thorium Tm Thulium Sn Tin Ti Titanium W Tungsten Uuo Ununoctium Uup Ununpentium Uus Ununseptium Uut Ununtrium U Uranium V Vanadium Xe Xenon Yb Ytterbium Y Yttrium Zn Zinc Zr Zirconium".split("\n") elements.each{|l| a,n=l.split("\t") # r = `ruby periodic.rb #{n}`.chomp() r = code.call(n).chomp() print "#{n} => #{a} " if r!=a then print ("FAIL: gave #{r}") p r,a exit else print("\tOK\n") end } print("PASS: #{elements.size} elements matched\n")