From 85297ca4a80e6953919cc2d94852ecb30011159e Mon Sep 17 00:00:00 2001 From: SowinskiBraeden Date: Thu, 15 Oct 2026 19:01:09 -0700 Subject: [PATCH] lab 04 --- labs/04/atomic-weights.txt | 81 ++++++++++++++++++++++++++++++++++++++ labs/04/lab4a.ex | 6 +++ labs/04/lab4b.ex | 8 ++++ 3 files changed, 95 insertions(+) create mode 100644 labs/04/atomic-weights.txt create mode 100644 labs/04/lab4a.ex create mode 100644 labs/04/lab4b.ex diff --git a/labs/04/atomic-weights.txt b/labs/04/atomic-weights.txt new file mode 100644 index 0000000..3bdb70a --- /dev/null +++ b/labs/04/atomic-weights.txt @@ -0,0 +1,81 @@ +1 H Hydrogen 1.008 +2 He Helium 4.003 +3 Li Lithium 6.94 +4 Be Beryllium 9.012 +5 B Boron 10.81 +6 C Carbon 12.011 +7 N Nitrogen 14.007 +8 O Oxygen 15.999 +9 F Fluorine 18.998 +10 Ne Neon 20.1797 +11 Na Sodium 22.989 +12 Mg Magnesium 24.305 +13 Al Aluminium 26.982 +14 Si Silicon 28.085 +15 P Phosphorus 30.974 +16 S Sulfur 32.06 +17 Cl Chlorine 35.45 +18 Ar Argon 39.948 +19 K Potassium 39.0983 +20 Ca Calcium 40.078 +21 Sc Scandium 44.956 +22 Ti Titanium 47.867 +23 V Vanadium 50.9415 +24 Cr Chromium 51.9961 +25 Mn Manganese 54.938 +26 Fe Iron 55.845 +27 Co Cobalt 58.933 +28 Ni Nickel 58.6934 +29 Cu Copper 63.546 +30 Zn Zinc 65.38 +31 Ga Gallium 69.723 +32 Ge Germanium 72.630 +33 As Arsenic 74.922 +34 Se Selenium 78.971 +35 Br Bromine 79.904 +36 Kr Krypton 83.798 +37 Rb Rubidium 85.4678 +38 Sr Strontium 87.62 +39 Y Yttrium 88.906 +40 Zr Zirconium 91.224 +41 Nb Niobium 92.906 +42 Mo Molybdenum 95.95 +44 Ru Ruthenium 101.07 +45 Rh Rhodium 102.905 +46 Pd Palladium 106.42 +47 Ag Silver 107.8682 +48 Cd Cadmium 112.414 +49 In Indium 114.818 +50 Sn Tin 118.710 +51 Sb Antimony 121.760 +52 Te Tellurium 127.60 +53 I Iodine 126.904 +54 Xe Xenon 131.293 +55 Cs Caesium 132.905 +56 Ba Barium 137.327 +57 La Lanthanum 138.905 +58 Ce Cerium 140.116 +59 Pr Praseodymium 140.908 +60 Nd Neodymium 144.242 +62 Sm Samarium 150.36 +63 Eu Europium 151.964 +64 Gd Gadolinium 157.25 +65 Tb Terbium 158.925 +66 Dy Dysprosium 162.500 +67 Ho Holmium 164.930 +68 Er Erbium 167.259 +69 Tm Thulium 168.934 +70 Yb Ytterbium 173.045 +71 Lu Lutetium 174.9668 +72 Hf Hafnium 178.486 +73 Ta Tantalum 180.948 +74 W Tungsten 183.84 +75 Re Rhenium 186.207 +76 Os Osmium 190.23 +77 Ir Iridium 192.217 +78 Pt Platinum 195.084 +79 Au Gold 196.967 +80 Hg Mercury 200.592 +81 Tl Thallium 204.38 +82 Pb Lead 207.2 +83 Bi Bismuth 208.980 diff --git a/labs/04/lab4a.ex b/labs/04/lab4a.ex new file mode 100644 index 0000000..9b6a185 --- /dev/null +++ b/labs/04/lab4a.ex @@ -0,0 +1,6 @@ +defmodule Lab4a do + for line <- String.split(File.read!("atomic-weights.txt"), "\n", trim: true) do + [_number, symbol, _name, weight] = String.split(line) + def unquote(:"#{String.downcase(symbol)}")(), do: unquote(String.to_float(weight)) + end +end diff --git a/labs/04/lab4b.ex b/labs/04/lab4b.ex new file mode 100644 index 0000000..5f4456a --- /dev/null +++ b/labs/04/lab4b.ex @@ -0,0 +1,8 @@ +defmodule Lab4b do + for line <- String.split(File.read!("atomic-weights.txt"), "\n", trim: true) do + [_number, symbol, _name, weight] = String.split(line) + def atomic_weight(unquote(symbol)), do: unquote(String.to_float(weight)) + end + + def atomic_weight(_symbol), do: -1 +end