Първа задача - температура и химични елементи

Предадени решения

Краен срок:
17.10.2016 17:00
Точки:
6

Срокът за предаване на решения е отминал

Температура и химични елементи

Най-често използваните мерни единици за температура са C (Целзий), F (Фаренхайт) и K (Келвин). Можете ли да преобразувате от Келвин във Фаренхайт наум? Не? И ние не можем.

Но знаете ли какво? Не ни се налага, защото можем да накараме компютрите да вършат това.

Задачата

За загрявка, ще искаме да напишете три функции:

Преобразуване на мерни единици

Първата част от задачата е да научите вашия компютър да преобразува температура от една мерна единица в друга. За целта напишете функция convert_between_temperature_units, приемаща следните аргументи:

  • градуси - реално число (Float)
  • мерната единица, в която са градусите
  • мерната единица, в която искаме да е резултатът

Мерните единици, с които ще работим са 'C', 'F' и 'K' - еднобуквени стрингове с главни букви. Няма да подаваме мерни единици, различни от тези три.

Функцията трябва да връща резултата, не да го принтира с puts.

Ето пример:

convert_between_temperature_units(0, 'C', 'K') #=> 273.15
convert_between_temperature_units(1, 'C', 'F') #=> 33.8

Формулите за тези преобразувания намерете в Интернет - това е част от задачата.

Втората функция - melting_point_of_substance

Можете ли да предположите какво ще искаме от тази функция? Да? Ето колко са важни имената.

Искаме по подадено име на вещество и мерна единица (отново една от горните три) да получим температурата на топене на съответното вещество в тази мерна единица. Точката на топене на едно вещество е температурата, при която то преминава от твърдо в течно състояние (или обратно).

Например:

melting_point_of_substance('water', 'C') #=> 0
melting_point_of_substance('water', 'K') #=> 273.15

Веществата, които ни интересуват са:

  • 'water' - вода - H₂O
  • 'ethanol' - етанол (етилов алкохол) - C₂H₅OH
  • 'gold' - злато - Au
  • 'silver' - сребро - Ag
  • 'copper' - мед - Cu

За конкретните температури - вижте таблицата в края на условието.

Третата функция - boiling_point_of_substance

Тази трябва да прави същото като горната функция, но да връща температурата на кипене на съответното вещество. Точката на кипене на едно вещество е температурата, при която то преминава от течно в газообразно състояние (или обратно).

Ето пример:

boiling_point_of_substance('water', 'C') #=> 100
boiling_point_of_substance('water', 'K') #=> 373.15

Табличка с температури

Колкото и да ни се иска да ви кажем да си ги намерите сами, ще се наложи да ви ги дадем наготово.

Вещество Точка на топене Точка на кипене
water 0°C 100°C
ethanol -114°C 78,37°C
gold 1 064°C 2 700°C
silver 961,8°C 2 162°C
copper 1 085°C 2 567°C

Не е задължително в решенията си да пазите тези температури в градуси Целзий - може да ги преобразувате в нещо друго и да ги използвате така. Интересува ни единствено резултатите да са правилни.

Можете да си създавате помощни функции, стига да не се казват helper.

Най-важното...

Най-важната част от тази задача е да се запознаете с ръководството по стил и да си "подкарате" средата за писане на домашни:

Ruby Style Guide

Хвърлете око на ръководството по стил.

Знаем, че е дълго и повечето неща, за които се говори все още не сме ви ги преподали. Въпреки това, особено много държим на основните неща в секциите Source Code Layout, Syntax и Naming.

Примерни тестове и стилова проверка

Свалете си хранилището за домашните и пишете решенията си в него. Там ще качваме примерните тестове, както и стиловите изисквания за всяко домашно.

Инструкции как да свалите копие на хранилището, как да подкарате примерните тестове и как да пуснете стиловите проверки има в README-то му (отворете горния линк и скролнете малко).

ВАЖНО

Задължително си пуснете примерните тестове и стиловата проверка преди да предадете решение. Примерните тестове ще ви спасят от подли грешки като това да объркате името на някоя функция. Тъй като оценяването на задачите е автоматично, този вид грешки лесно довеждат до рязко намаляване на точките ви. Няма да приемаме молби за промяна на кода след крайния срок на задачата, дори грешката да е една буква.