Решение на Първа задача - температура и химични елементи от Христина Тодорова

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

Към профила на Христина Тодорова

Резултати

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

Код

def from_celsius(degrees, unit)
case unit
when 'C' then degrees
when 'K' then degrees + 273.15
when 'F' then (degrees * 1.8) + 32
end
end
def to_celsius(degrees, unit)
case unit
when 'C' then degrees
when 'K' then degrees - 273.15
when 'F' then (degrees - 32) / 1.8
end
end
def convert_between_temperature_units(degrees, input_unit, output_unit)
return degrees if input_unit == output_unit
case input_unit
when 'C' then from_celsius(degrees, output_unit)
when 'K' then from_celsius(to_celsius(degrees, 'K'), output_unit)
when 'F' then from_celsius(to_celsius(degrees, 'F'), output_unit)
end
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

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

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

Finished in 0.00765 seconds
17 examples, 0 failures

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

Христина обнови решението на 11.10.2016 00:39 (преди над 7 години)

+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

Христина обнови решението на 11.10.2016 17:05 (преди над 7 години)

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 - 32) / 1.8 if output_unit == 'C'
answer = (degrees + 459.67) * 0.55555555555 if output_unit == 'K'

Тези inline if-ове тук не са много добра идея, защото ти се налага да повтаряш answer = постоянно (не можеш да използваш това, че всичко е израз).

Можеш ли да се сетиш как да направиш преобразуването на две стъпки, така че да не ти се налага да имаш if в when-овете? Също, няма да ти се налага да правиш трикови преобразувания като F => K с тези 0.55555555555 :)

end
answer
end
MELTNG_POINTS = {
'water' => 0, 'ethanol' => -114, 'gold' => 1064,
- 'silver' => 961.8, 'copper' => 1085
+ 'silver' => 961.8, 'copper' => 1085
}
BOILING_POINS = {
'water' => 100, 'ethanol' => 78.37, 'gold' => 2700,
- 'silver' => 2162, 'copper' => 2567
+ '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

Христина обнови решението на 14.10.2016 18:01 (преди над 7 години)

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
+ 'water' => 0,
+ 'ethanol' => -114,
+ 'gold' => 1064,
+ 'silver' => 961.8,
+ 'copper' => 1085
}
BOILING_POINS = {
- 'water' => 100, 'ethanol' => 78.37, 'gold' => 2700,
- 'silver' => 2162, 'copper' => 2567
+ '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

Христина обнови решението на 14.10.2016 21:45 (преди над 7 години)

+def from_celsius(degrees, unit)
+ case unit
+ when 'C' then degrees
+ when 'K' then degrees + 273.15
+ when 'F' then (degrees * 1.8) + 32
+ end
+end
+
+def to_celsius(degrees, unit)
+ case unit
+ when 'C' then degrees
+ when 'K' then degrees - 273.15
+ when 'F' then (degrees - 32) / 1.8
+ end
+end
+
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'
+ when 'C' then from_celsius(degrees, output_unit)
+ when 'K' then from_celsius(to_celsius(degrees, 'K'), output_unit)
+ when 'F' then from_celsius(to_celsius(degrees, 'F'), output_unit)
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