Skip to content

Instantly share code, notes, and snippets.

@zmactep
Last active August 29, 2015 14:24
Show Gist options
  • Save zmactep/919b0d88aabab4972243 to your computer and use it in GitHub Desktop.
Save zmactep/919b0d88aabab4972243 to your computer and use it in GitHub Desktop.
Chemicals
abstract class Atom(val isotope : Int, val charge : Int = 0) {
def number : Int
def name : String
def symbol : String
def valence : Set[Int] = Set.empty[Int]
}
trait Organic
object Atom {
object isotope {
def H : Int = 1
def He : Int = 4
def Li : Int = 6
def Be : Int = 9
def B : Int = 10
def C : Int = 12
def N : Int = 14
def O : Int = 16
def F : Int = 18
def Ne : Int = 20
def Na : Int = 22
def Mg : Int = 24
def Al : Int = 26
def Si : Int = 28
def P : Int = 30
def S : Int = 32
def Cl : Int = 35
def Ar : Int = 39
def K : Int = 39
def Ca : Int = 40
def Sc : Int = 44
def Ti : Int = 47
def V : Int = 50
def Cr : Int = 51
def Mn : Int = 54
def Fe : Int = 55
def Co : Int = 58
def Ni : Int = 58
def Cu : Int = 63
def Zn : Int = 65
def Ga : Int = 69
def Ge : Int = 72
def As : Int = 74
def Se : Int = 78
def Br : Int = 79
def Kr : Int = 83
def Rb : Int = 85
def Sr : Int = 87
def Y : Int = 88
def Zr : Int = 91
def Nb : Int = 92
def Mo : Int = 95
def Tc : Int = 981
def Ru : Int = 101
def Rh : Int = 102
def Pd : Int = 106
def Ag : Int = 107
def Cd : Int = 112
def In : Int = 114
def Sn : Int = 118
def Sb : Int = 121
def Te : Int = 127
def I : Int = 126
def Xe : Int = 131
def Cs : Int = 132
def Ba : Int = 137
def La : Int = 138
def Ce : Int = 140
def Pr : Int = 140
def Nd : Int = 144
def Pm : Int = 1451
def Sm : Int = 150
def Eu : Int = 151
def Gd : Int = 157
def Tb : Int = 158
def Dy : Int = 162
def Ho : Int = 164
def Er : Int = 167
def Tm : Int = 168
def Yb : Int = 173
def Lu : Int = 174
def Hf : Int = 178
def Ta : Int = 180
def W : Int = 183
def Re : Int = 186
def Os : Int = 190
def Ir : Int = 192
def Pt : Int = 195
def Au : Int = 196
def Hg : Int = 200
def Tl : Int = 204
def Pb : Int = 207
def Bi : Int = 208
def Po : Int = 2091
def At : Int = 2101
def Rn : Int = 2221
def Fr : Int = 2231
def Ra : Int = 2261
def Ac : Int = 2271
def Th : Int = 232
def Pa : Int = 231
def U : Int = 238
def Np : Int = 2371
def Pu : Int = 2441
def Am : Int = 2431
def Cm : Int = 2471
def Bk : Int = 2471
def Cf : Int = 2511
def Es : Int = 2521
def Fm : Int = 2571
def Md : Int = 2581
def No : Int = 2591
def Lr : Int = 2661
def Rf : Int = 2671
def Db : Int = 2681
def Sg : Int = 2691
def Bh : Int = 2701
def Hs : Int = 2691
def Mt : Int = 2781
def Ds : Int = 2811
def Rg : Int = 2811
def Cn : Int = 2851
def Uut : Int = 2861
def Fl : Int = 2891
def Uup : Int = 2891
def Lv : Int = 2931
def Uus : Int = 2941
def Uuo : Int = 2941
}
}
class Hydrogen(isotope : Int = Atom.isotope.H, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 1
override def name : String = "Hydrogen"
override def symbol : String = "H"
override def valence : Set[Int] = Set(1, -1)
}
class Helium(isotope : Int = Atom.isotope.He, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 2
override def name : String = "Helium"
override def symbol : String = "He"
override def valence : Set[Int] = Set(0)
}
class Lithium(isotope : Int = Atom.isotope.Li, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 3
override def name : String = "Lithium"
override def symbol : String = "Li"
override def valence : Set[Int] = Set(1)
}
class Beryllium(isotope : Int = Atom.isotope.Be, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 4
override def name : String = "Beryllium"
override def symbol : String = "Be"
override def valence : Set[Int] = Set(2)
}
class Boron(isotope : Int = Atom.isotope.B, charge : Int = 0) extends Atom(isotope, charge) with Organic {
override def number : Int = 5
override def name : String = "Boron"
override def symbol : String = "B"
override def valence : Set[Int] = Set(3, -3)
}
class Carbon(isotope : Int = Atom.isotope.C, charge : Int = 0) extends Atom(isotope, charge) with Organic {
override def number : Int = 6
override def name : String = "Carbon"
override def symbol : String = "C"
override def valence : Set[Int] = Set(2, 4)
}
class Nitrogen(isotope : Int = Atom.isotope.N, charge : Int = 0) extends Atom(isotope, charge) with Organic {
override def number : Int = 7
override def name : String = "Nitrogen"
override def symbol : String = "N"
override def valence : Set[Int] = Set(1, 2, 3, 4, 5, -3, -2, -1)
}
class Oxygen(isotope : Int = Atom.isotope.O, charge : Int = 0) extends Atom(isotope, charge) with Organic {
override def number : Int = 8
override def name : String = "Oxygen"
override def symbol : String = "O"
override def valence : Set[Int] = Set(-2)
}
class Fluorine(isotope : Int = Atom.isotope.F, charge : Int = 0) extends Atom(isotope, charge) with Organic {
override def number : Int = 9
override def name : String = "Fluorine"
override def symbol : String = "F"
override def valence : Set[Int] = Set(1, -1)
}
class Neon(isotope : Int = Atom.isotope.Ne, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 10
override def name : String = "Neon"
override def symbol : String = "Ne"
override def valence : Set[Int] = Set(0)
}
class Sodium(isotope : Int = Atom.isotope.Na, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 11
override def name : String = "Sodium"
override def symbol : String = "Na"
override def valence : Set[Int] = Set(1)
}
class Magnesium(isotope : Int = Atom.isotope.Mg, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 12
override def name : String = "Magnesium"
override def symbol : String = "Mg"
override def valence : Set[Int] = Set(2)
}
class Aluminium(isotope : Int = Atom.isotope.Al, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 13
override def name : String = "Aluminium"
override def symbol : String = "Al"
override def valence : Set[Int] = Set(3)
}
class Silicon(isotope : Int = Atom.isotope.Si, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 14
override def name : String = "Silicon"
override def symbol : String = "Si"
override def valence : Set[Int] = Set(2, -4, 4)
}
class Phosphorus(isotope : Int = Atom.isotope.P, charge : Int = 0) extends Atom(isotope, charge) with Organic {
override def number : Int = 15
override def name : String = "Phosphorus"
override def symbol : String = "P"
override def valence : Set[Int] = Set(1, 3, -3, 5)
}
class Sulfur(isotope : Int = Atom.isotope.S, charge : Int = 0) extends Atom(isotope, charge) with Organic {
override def number : Int = 16
override def name : String = "Sulfur"
override def symbol : String = "S"
override def valence : Set[Int] = Set(2, 4, -2, 6)
}
class Chlorine(isotope : Int = Atom.isotope.Cl, charge : Int = 0) extends Atom(isotope, charge) with Organic {
override def number : Int = 17
override def name : String = "Chlorine"
override def symbol : String = "Cl"
override def valence : Set[Int] = Set(1, 2, 3, 4, 5, 7, -1)
}
class Argon(isotope : Int = Atom.isotope.Ar, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 18
override def name : String = "Argon"
override def symbol : String = "Ar"
override def valence : Set[Int] = Set(0)
}
class Potassium(isotope : Int = Atom.isotope.K, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 19
override def name : String = "Potassium"
override def symbol : String = "K"
override def valence : Set[Int] = Set(1)
}
class Calcium(isotope : Int = Atom.isotope.Ca, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 20
override def name : String = "Calcium"
override def symbol : String = "Ca"
override def valence : Set[Int] = Set(2)
}
class Scandium(isotope : Int = Atom.isotope.Sc, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 21
override def name : String = "Scandium"
override def symbol : String = "Sc"
override def valence : Set[Int] = Set(3)
}
class Titanium(isotope : Int = Atom.isotope.Ti, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 22
override def name : String = "Titanium"
override def symbol : String = "Ti"
override def valence : Set[Int] = Set(2, 3, 4)
}
class Vanadium(isotope : Int = Atom.isotope.V, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 23
override def name : String = "Vanadium"
override def symbol : String = "V"
override def valence : Set[Int] = Set(2, 3, 4, 5)
}
class Chromium(isotope : Int = Atom.isotope.Cr, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 24
override def name : String = "Chromium"
override def symbol : String = "Cr"
override def valence : Set[Int] = Set(2, 3, 6)
}
class Manganese(isotope : Int = Atom.isotope.Mn, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 25
override def name : String = "Manganese"
override def symbol : String = "Mn"
override def valence : Set[Int] = Set(2, 3, 4, 6, 7)
}
class Iron(isotope : Int = Atom.isotope.Fe, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 26
override def name : String = "Iron"
override def symbol : String = "Fe"
override def valence : Set[Int] = Set(2, 3, 4, 6)
}
class Cobalt(isotope : Int = Atom.isotope.Co, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 27
override def name : String = "Cobalt"
override def symbol : String = "Co"
override def valence : Set[Int] = Set(2, 3, 4)
}
class Nickel(isotope : Int = Atom.isotope.Ni, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 28
override def name : String = "Nickel"
override def symbol : String = "Ni"
override def valence : Set[Int] = Set(1, 2, 3, 4)
}
class Copper(isotope : Int = Atom.isotope.Cu, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 29
override def name : String = "Copper"
override def symbol : String = "Cu"
override def valence : Set[Int] = Set(1, 2, 3)
}
class Zinc(isotope : Int = Atom.isotope.Zn, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 30
override def name : String = "Zinc"
override def symbol : String = "Zn"
override def valence : Set[Int] = Set(2)
}
class Gallium(isotope : Int = Atom.isotope.Ga, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 31
override def name : String = "Gallium"
override def symbol : String = "Ga"
override def valence : Set[Int] = Set(2, 3)
}
class Germanium(isotope : Int = Atom.isotope.Ge, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 32
override def name : String = "Germanium"
override def symbol : String = "Ge"
override def valence : Set[Int] = Set(2, -4, 4)
}
class Arsenic(isotope : Int = Atom.isotope.As, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 33
override def name : String = "Arsenic"
override def symbol : String = "As"
override def valence : Set[Int] = Set(2, 3, -3, 5)
}
class Selenium(isotope : Int = Atom.isotope.Se, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 34
override def name : String = "Selenium"
override def symbol : String = "Se"
override def valence : Set[Int] = Set(2, 4, -2, 6)
}
class Bromine(isotope : Int = Atom.isotope.Br, charge : Int = 0) extends Atom(isotope, charge) with Organic {
override def number : Int = 35
override def name : String = "Bromine"
override def symbol : String = "Br"
override def valence : Set[Int] = Set(1, 3, 4, 5, -1)
}
class Krypton(isotope : Int = Atom.isotope.Kr, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 36
override def name : String = "Krypton"
override def symbol : String = "Kr"
override def valence : Set[Int] = Set(0)
}
class Rubidium(isotope : Int = Atom.isotope.Rb, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 37
override def name : String = "Rubidium"
override def symbol : String = "Rb"
override def valence : Set[Int] = Set(1)
}
class Strontium(isotope : Int = Atom.isotope.Sr, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 38
override def name : String = "Strontium"
override def symbol : String = "Sr"
override def valence : Set[Int] = Set(2)
}
class Yttrium(isotope : Int = Atom.isotope.Y, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 39
override def name : String = "Yttrium"
override def symbol : String = "Y"
override def valence : Set[Int] = Set(3)
}
class Zirconium(isotope : Int = Atom.isotope.Zr, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 40
override def name : String = "Zirconium"
override def symbol : String = "Zr"
override def valence : Set[Int] = Set(2, 3, 4)
}
class Niobium(isotope : Int = Atom.isotope.Nb, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 41
override def name : String = "Niobium"
override def symbol : String = "Nb"
override def valence : Set[Int] = Set(2, 3, 4, 5)
}
class Molybdenum(isotope : Int = Atom.isotope.Mo, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 42
override def name : String = "Molybdenum"
override def symbol : String = "Mo"
override def valence : Set[Int] = Set(2, 3, 4, 5, 6)
}
class Technetium(isotope : Int = Atom.isotope.Tc, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 43
override def name : String = "Technetium"
override def symbol : String = "Tc"
override def valence : Set[Int] = Set(6)
}
class Ruthenium(isotope : Int = Atom.isotope.Ru, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 44
override def name : String = "Ruthenium"
override def symbol : String = "Ru"
override def valence : Set[Int] = Set(2, 3, 4, 6, 7, 8)
}
class Rhodium(isotope : Int = Atom.isotope.Rh, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 45
override def name : String = "Rhodium"
override def symbol : String = "Rh"
override def valence : Set[Int] = Set(2, 3, 4, 6)
}
class Palladium(isotope : Int = Atom.isotope.Pd, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 46
override def name : String = "Palladium"
override def symbol : String = "Pd"
override def valence : Set[Int] = Set(2, 4, 6)
}
class Silver(isotope : Int = Atom.isotope.Ag, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 47
override def name : String = "Silver"
override def symbol : String = "Ag"
override def valence : Set[Int] = Set(1, 2, 3)
}
class Cadmium(isotope : Int = Atom.isotope.Cd, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 48
override def name : String = "Cadmium"
override def symbol : String = "Cd"
override def valence : Set[Int] = Set(1, 2)
}
class Indium(isotope : Int = Atom.isotope.In, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 49
override def name : String = "Indium"
override def symbol : String = "In"
override def valence : Set[Int] = Set(1, 2, 3)
}
class Tin(isotope : Int = Atom.isotope.Sn, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 50
override def name : String = "Tin"
override def symbol : String = "Sn"
override def valence : Set[Int] = Set(2, 4)
}
class Antimony(isotope : Int = Atom.isotope.Sb, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 51
override def name : String = "Antimony"
override def symbol : String = "Sb"
override def valence : Set[Int] = Set(3, 4, -3, 5)
}
class Tellurium(isotope : Int = Atom.isotope.Te, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 52
override def name : String = "Tellurium"
override def symbol : String = "Te"
override def valence : Set[Int] = Set(2, 4, -2, 6)
}
class Iodine(isotope : Int = Atom.isotope.I, charge : Int = 0) extends Atom(isotope, charge) with Organic {
override def number : Int = 53
override def name : String = "Iodine"
override def symbol : String = "I"
override def valence : Set[Int] = Set(1, 3, 4, 5, 7, -1)
}
class Xenon(isotope : Int = Atom.isotope.Xe, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 54
override def name : String = "Xenon"
override def symbol : String = "Xe"
override def valence : Set[Int] = Set(0)
}
class Caesium(isotope : Int = Atom.isotope.Cs, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 55
override def name : String = "Caesium"
override def symbol : String = "Cs"
override def valence : Set[Int] = Set(1)
}
class Barium(isotope : Int = Atom.isotope.Ba, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 56
override def name : String = "Barium"
override def symbol : String = "Ba"
override def valence : Set[Int] = Set(2)
}
class Lanthanum(isotope : Int = Atom.isotope.La, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 57
override def name : String = "Lanthanum"
override def symbol : String = "La"
override def valence : Set[Int] = Set(3)
}
class Cerium(isotope : Int = Atom.isotope.Ce, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 58
override def name : String = "Cerium"
override def symbol : String = "Ce"
override def valence : Set[Int] = Set(3, 4)
}
class Praseodymium(isotope : Int = Atom.isotope.Pr, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 59
override def name : String = "Praseodymium"
override def symbol : String = "Pr"
override def valence : Set[Int] = Set(3)
}
class Neodymium(isotope : Int = Atom.isotope.Nd, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 60
override def name : String = "Neodymium"
override def symbol : String = "Nd"
override def valence : Set[Int] = Set(3, 4)
}
class Promethium(isotope : Int = Atom.isotope.Pm, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 61
override def name : String = "Promethium"
override def symbol : String = "Pm"
override def valence : Set[Int] = Set(3)
}
class Samarium(isotope : Int = Atom.isotope.Sm, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 62
override def name : String = "Samarium"
override def symbol : String = "Sm"
override def valence : Set[Int] = Set(2, 3)
}
class Europium(isotope : Int = Atom.isotope.Eu, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 63
override def name : String = "Europium"
override def symbol : String = "Eu"
override def valence : Set[Int] = Set(2, 3)
}
class Gadolinium(isotope : Int = Atom.isotope.Gd, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 64
override def name : String = "Gadolinium"
override def symbol : String = "Gd"
override def valence : Set[Int] = Set(3)
}
class Terbium(isotope : Int = Atom.isotope.Tb, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 65
override def name : String = "Terbium"
override def symbol : String = "Tb"
override def valence : Set[Int] = Set(3, 4)
}
class Dysprosium(isotope : Int = Atom.isotope.Dy, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 66
override def name : String = "Dysprosium"
override def symbol : String = "Dy"
override def valence : Set[Int] = Set(3)
}
class Holmium(isotope : Int = Atom.isotope.Ho, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 67
override def name : String = "Holmium"
override def symbol : String = "Ho"
override def valence : Set[Int] = Set(3)
}
class Erbium(isotope : Int = Atom.isotope.Er, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 68
override def name : String = "Erbium"
override def symbol : String = "Er"
override def valence : Set[Int] = Set(3)
}
class Thulium(isotope : Int = Atom.isotope.Tm, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 69
override def name : String = "Thulium"
override def symbol : String = "Tm"
override def valence : Set[Int] = Set(2, 3)
}
class Ytterbium(isotope : Int = Atom.isotope.Yb, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 70
override def name : String = "Ytterbium"
override def symbol : String = "Yb"
override def valence : Set[Int] = Set(2, 3)
}
class Lutetium(isotope : Int = Atom.isotope.Lu, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 71
override def name : String = "Lutetium"
override def symbol : String = "Lu"
override def valence : Set[Int] = Set(3)
}
class Hafnium(isotope : Int = Atom.isotope.Hf, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 72
override def name : String = "Hafnium"
override def symbol : String = "Hf"
override def valence : Set[Int] = Set(4)
}
class Tantalum(isotope : Int = Atom.isotope.Ta, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 73
override def name : String = "Tantalum"
override def symbol : String = "Ta"
override def valence : Set[Int] = Set(3, 4, 5)
}
class Tungsten(isotope : Int = Atom.isotope.W, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 74
override def name : String = "Tungsten"
override def symbol : String = "W"
override def valence : Set[Int] = Set(2, 3, 4, 5, 6)
}
class Rhenium(isotope : Int = Atom.isotope.Re, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 75
override def name : String = "Rhenium"
override def symbol : String = "Re"
override def valence : Set[Int] = Set(1, 2, 3, 4, 5, 6, 7, -1)
}
class Osmium(isotope : Int = Atom.isotope.Os, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 76
override def name : String = "Osmium"
override def symbol : String = "Os"
override def valence : Set[Int] = Set(8, 2, 3, 4, 6)
}
class Iridium(isotope : Int = Atom.isotope.Ir, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 77
override def name : String = "Iridium"
override def symbol : String = "Ir"
override def valence : Set[Int] = Set(1, 2, 3, 4, 6)
}
class Platinum(isotope : Int = Atom.isotope.Pt, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 78
override def name : String = "Platinum"
override def symbol : String = "Pt"
override def valence : Set[Int] = Set(1, 2, 3, 4, 6)
}
class Gold(isotope : Int = Atom.isotope.Au, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 79
override def name : String = "Gold"
override def symbol : String = "Au"
override def valence : Set[Int] = Set(1, 2, 3)
}
class Mercury(isotope : Int = Atom.isotope.Hg, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 80
override def name : String = "Mercury"
override def symbol : String = "Hg"
override def valence : Set[Int] = Set(1, 2)
}
class Thallium(isotope : Int = Atom.isotope.Tl, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 81
override def name : String = "Thallium"
override def symbol : String = "Tl"
override def valence : Set[Int] = Set(1, 2, 3)
}
class Lead(isotope : Int = Atom.isotope.Pb, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 82
override def name : String = "Lead"
override def symbol : String = "Pb"
override def valence : Set[Int] = Set(2, 4)
}
class Bismuth(isotope : Int = Atom.isotope.Bi, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 83
override def name : String = "Bismuth"
override def symbol : String = "Bi"
override def valence : Set[Int] = Set(2, 3, 4, -3, 5)
}
class Polonium(isotope : Int = Atom.isotope.Po, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 84
override def name : String = "Polonium"
override def symbol : String = "Po"
override def valence : Set[Int] = Set(2, 4, -2, 6)
}
class Astatine(isotope : Int = Atom.isotope.At, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 85
override def name : String = "Astatine"
override def symbol : String = "At"
}
class Radon(isotope : Int = Atom.isotope.Rn, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 86
override def name : String = "Radon"
override def symbol : String = "Rn"
override def valence : Set[Int] = Set(0)
}
class Francium(isotope : Int = Atom.isotope.Fr, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 87
override def name : String = "Francium"
override def symbol : String = "Fr"
}
class Radium(isotope : Int = Atom.isotope.Ra, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 88
override def name : String = "Radium"
override def symbol : String = "Ra"
override def valence : Set[Int] = Set(2)
}
class Actinium(isotope : Int = Atom.isotope.Ac, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 89
override def name : String = "Actinium"
override def symbol : String = "Ac"
override def valence : Set[Int] = Set(3)
}
class Thorium(isotope : Int = Atom.isotope.Th, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 90
override def name : String = "Thorium"
override def symbol : String = "Th"
override def valence : Set[Int] = Set(4)
}
class Protactinium(isotope : Int = Atom.isotope.Pa, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 91
override def name : String = "Protactinium"
override def symbol : String = "Pa"
override def valence : Set[Int] = Set(5)
}
class Uranium(isotope : Int = Atom.isotope.U, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 92
override def name : String = "Uranium"
override def symbol : String = "U"
override def valence : Set[Int] = Set(2, 3, 4, 5, 6)
}
class Neptunium(isotope : Int = Atom.isotope.Np, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 93
override def name : String = "Neptunium"
override def symbol : String = "Np"
}
class Plutonium(isotope : Int = Atom.isotope.Pu, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 94
override def name : String = "Plutonium"
override def symbol : String = "Pu"
}
class Americium(isotope : Int = Atom.isotope.Am, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 95
override def name : String = "Americium"
override def symbol : String = "Am"
}
class Curium(isotope : Int = Atom.isotope.Cm, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 96
override def name : String = "Curium"
override def symbol : String = "Cm"
}
class Berkelium(isotope : Int = Atom.isotope.Bk, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 97
override def name : String = "Berkelium"
override def symbol : String = "Bk"
}
class Californium(isotope : Int = Atom.isotope.Cf, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 98
override def name : String = "Californium"
override def symbol : String = "Cf"
}
class Einsteinium(isotope : Int = Atom.isotope.Es, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 99
override def name : String = "Einsteinium"
override def symbol : String = "Es"
}
class Fermium(isotope : Int = Atom.isotope.Fm, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 100
override def name : String = "Fermium"
override def symbol : String = "Fm"
}
class Mendelevium(isotope : Int = Atom.isotope.Md, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 101
override def name : String = "Mendelevium"
override def symbol : String = "Md"
}
class Nobelium(isotope : Int = Atom.isotope.No, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 102
override def name : String = "Nobelium"
override def symbol : String = "No"
}
class Lawrencium(isotope : Int = Atom.isotope.Lr, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 103
override def name : String = "Lawrencium"
override def symbol : String = "Lr"
}
class Rutherfordium(isotope : Int = Atom.isotope.Rf, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 104
override def name : String = "Rutherfordium"
override def symbol : String = "Rf"
}
class Dubnium(isotope : Int = Atom.isotope.Db, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 105
override def name : String = "Dubnium"
override def symbol : String = "Db"
}
class Seaborgium(isotope : Int = Atom.isotope.Sg, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 106
override def name : String = "Seaborgium"
override def symbol : String = "Sg"
}
class Bohrium(isotope : Int = Atom.isotope.Bh, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 107
override def name : String = "Bohrium"
override def symbol : String = "Bh"
}
class Hassium(isotope : Int = Atom.isotope.Hs, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 108
override def name : String = "Hassium"
override def symbol : String = "Hs"
}
class Meitnerium(isotope : Int = Atom.isotope.Mt, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 109
override def name : String = "Meitnerium"
override def symbol : String = "Mt"
}
class Darmstadtium(isotope : Int = Atom.isotope.Ds, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 110
override def name : String = "Darmstadtium"
override def symbol : String = "Ds"
}
class Roentgenium(isotope : Int = Atom.isotope.Rg, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 111
override def name : String = "Roentgenium"
override def symbol : String = "Rg"
}
class Copernicium(isotope : Int = Atom.isotope.Cn, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 112
override def name : String = "Copernicium"
override def symbol : String = "Cn"
}
class Ununtrium(isotope : Int = Atom.isotope.Uut, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 113
override def name : String = "Ununtrium"
override def symbol : String = "Uut"
}
class Flerovium(isotope : Int = Atom.isotope.Fl, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 114
override def name : String = "Flerovium"
override def symbol : String = "Fl"
}
class Ununpentium(isotope : Int = Atom.isotope.Uup, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 115
override def name : String = "Ununpentium"
override def symbol : String = "Uup"
}
class Livermorium(isotope : Int = Atom.isotope.Lv, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 116
override def name : String = "Livermorium"
override def symbol : String = "Lv"
}
class Ununseptium(isotope : Int = Atom.isotope.Uus, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 117
override def name : String = "Ununseptium"
override def symbol : String = "Uus"
}
class Ununoctium(isotope : Int = Atom.isotope.Uuo, charge : Int = 0) extends Atom(isotope, charge) {
override def number : Int = 118
override def name : String = "Ununoctium"
override def symbol : String = "Uuo"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment