Решение на Първа задача - температура и химични елементи от Валентин Георгиев

Обратно към всички решения

Към профила на Валентин Георгиев

Резултати

  • 6 точки от тестове
  • 0 бонус точки
  • 6 точки общо
  • 17 успешни тест(а)
  • 0 неуспешни тест(а)

Код

def convert_between_temperature_units(degrees, degrees_unit, converted_unit)
units = "#{degrees_unit}#{converted_unit}"
hash_temp_converter = {

Тук има изредени 3 двойки реципрочни формули за конвертиране. Това не ти ли изглежда като излишно повторение? Може да подходиш по алтернативен начин: На първа стъпка конвертиране до избрана от теб междинна мерна единица, а на втора конвертиране от нея до желаната. За пример нека вземем Целзий като междинна. Така ще ти трябват само формули от F и К към C и от C до F и K.

'CK' => degrees + 273.15,
'KC' => degrees - 273.15,
'CF' => degrees * 1.8 + 32,
'FC' => (degrees - 32) / 1.8,
'KF' => degrees * 9 / 5 - 459.67,
'FK' => (degrees + 459.67) * 5 / 9
}
hash_temp_converter[units] ? hash_temp_converter[units].round(5) : degrees
end
def melting_point_of_substance(substance, degrees_unit)
hash_melting_point_celsius = {
'water' => 0,
'ethanol' => -114,
'gold' => 1064,
'silver' => 961.8,
'copper' => 1085
}
convert_between_temperature_units(hash_melting_point_celsius[substance], 'C', degrees_unit)
end
def boiling_point_of_substance(substance, degrees_unit)
hash_boiling_point_celsius = {
'water' => 100,
'ethanol' => 78.37,
'gold' => 2700,
'silver' => 2162,
'copper' => 2567
}
convert_between_temperature_units(hash_boiling_point_celsius[substance], 'C', degrees_unit)
end

Лог от изпълнението

.................

Finished in 0.00869 seconds
17 examples, 0 failures

История (1 версия и 4 коментара)

Валентин обнови решението на 14.10.2016 21:14 (преди над 7 години)

+def convert_between_temperature_units(degrees, degrees_unit, converted_unit)
+
+ units = "#{degrees_unit}#{converted_unit}"
+
+ hash_temp_converter = {

Тук има изредени 3 двойки реципрочни формули за конвертиране. Това не ти ли изглежда като излишно повторение? Може да подходиш по алтернативен начин: На първа стъпка конвертиране до избрана от теб междинна мерна единица, а на втора конвертиране от нея до желаната. За пример нека вземем Целзий като междинна. Така ще ти трябват само формули от F и К към C и от C до F и K.

+ 'CK' => degrees + 273.15,
+ 'KC' => degrees - 273.15,
+ 'CF' => degrees * 1.8 + 32,
+ 'FC' => (degrees - 32) / 1.8,
+ 'KF' => degrees * 9 / 5 - 459.67,
+ 'FK' => (degrees + 459.67) * 5 / 9
+ }
+
+ hash_temp_converter[units] ? hash_temp_converter[units].round(5) : degrees
+end
+
+def melting_point_of_substance(substance, degrees_unit)
+
+ hash_melting_point_celsius = {
+ 'water' => 0,
+ 'ethanol' => -114,
+ 'gold' => 1064,
+ 'silver' => 961.8,
+ 'copper' => 1085
+ }
+
+ convert_between_temperature_units(hash_melting_point_celsius[substance], 'C', degrees_unit)
+
+end
+
+def boiling_point_of_substance(substance, degrees_unit)
+
+ hash_boiling_point_celsius = {
+ 'water' => 100,
+ 'ethanol' => 78.37,
+ 'gold' => 2700,
+ 'silver' => 2162,
+ 'copper' => 2567
+ }
+
+ convert_between_temperature_units(hash_boiling_point_celsius[substance], 'C', degrees_unit)
+
+end