Христина обнови решението на 11.10.2016 00:39 (преди около 9 години)
+def convert_between_temperature_units(degrees, input_unit, output_unit)
+  return degrees if input_unit == output_unit
+
+  case input_unit
+  when 'K'
+    answer = degrees - 273.15 if output_unit == 'C'
+    answer = (degrees * 1.8) - 459.67 if output_unit == 'F'
+  when 'C'
+    answer = degrees + 273.15 if output_unit == 'K'
+    answer = (degrees * 1.8) + 32 if output_unit == 'F'
+  when 'F'
+    answer = (degrees - 32) * 1.8 if output_unit == 'C'
+    answer = (degrees + 459.67) * 0.55555555555 if output_unit == 'K'
+  end
+  answer
+end
+
+MELTNG_POINTS = {
+  'water' => 0, 'ethanol' => -114, 'gold' => 1064,
+  'silver' => 961.8, 'copper' => 1085 
+}
+
+BOILING_POINS = {
+  'water' => 100, 'ethanol' => 78.37, 'gold' => 2700,
+  'silver' => 2162, 'copper' => 2567 
+}
+
+def melting_point_of_substance(substance, unit)
+  convert_between_temperature_units(MELTNG_POINTS[substance], 'C', unit)
+end
+
+def boiling_point_of_substance(substance, unit)
+  convert_between_temperature_units(BOILING_POINS[substance], 'C', unit)
+end

Супер :)
Единственото нещо, което леко не ми допада е подредбата - можеш спокойно да ги сложиш всяко на отделен ред. Така ще е по-лесно за сканиране кое е дефинирано.