Решение на Първа задача от Петър Нетовски

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

Към профила на Петър Нетовски

Резултати

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

Код

def convert_to_bgn(currency_amount, currency_name)
currency_to_bgn_rate = {bgn: 1, usd: 1.7408, eur: 1.9557, gbp: 2.6415}
bgn_amount = currency_amount * currency_to_bgn_rate[currency_name]
bgn_amount.round(2)
end
def compare_prices(amount_1, currency_1, amount_2, currency_2)
convert_to_bgn(amount_1, currency_1) - convert_to_bgn(amount_2, currency_2)
end

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

........

Finished in 0.00678 seconds
8 examples, 0 failures

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

Петър обнови решението на 10.10.2015 17:24 (преди около 9 години)

+def convert_to_bgn(currency_amount, currency_type)
+ # define currency courses needed in this task inside a hash
+ currency_course = {bgn: 1,
+ usd: 1.7408,
+ eur: 1.9557,
+ gbp: 2.6415}
+
+ # get amount in bgn
+ bgn_amount = currency_amount * currency_course[currency_type]
+
+ # round it
+ bgn_amount.round(2)
+end
+
+def compare_prices(amount_1, currency_1, amount_2, currency_2)
+ # give Veselka what she wants
+ convert_to_bgn(amount_1, currency_1) \
+ - convert_to_bgn(amount_2, currency_2)
+end

Петър обнови решението на 10.10.2015 17:48 (преди около 9 години)

-def convert_to_bgn(currency_amount, currency_type)
- # define currency courses needed in this task inside a hash
- currency_course = {bgn: 1,
- usd: 1.7408,
- eur: 1.9557,
- gbp: 2.6415}
+def convert_to_bgn(currency_amount, currency_name)
+ # define currency rates needed in this task inside a hash
+ currency_rate = {bgn: 1,
+ usd: 1.7408,
+ eur: 1.9557,
+ gbp: 2.6415}
# get amount in bgn
- bgn_amount = currency_amount * currency_course[currency_type]
+ bgn_amount = currency_amount * currency_rate[currency_name]
# round it
bgn_amount.round(2)
end
def compare_prices(amount_1, currency_1, amount_2, currency_2)
# give Veselka what she wants
convert_to_bgn(amount_1, currency_1) \
- convert_to_bgn(amount_2, currency_2)
end

Петър обнови решението на 10.10.2015 17:55 (преди около 9 години)

def convert_to_bgn(currency_amount, currency_name)
- # define currency rates needed in this task inside a hash
- currency_rate = {bgn: 1,
- usd: 1.7408,
- eur: 1.9557,
- gbp: 2.6415}
+ # define currency to bgn rates needed in this task inside a hash
+ currency_to_bgn_rate = {bgn: 1,
+ usd: 1.7408,
+ eur: 1.9557,
+ gbp: 2.6415}
# get amount in bgn
- bgn_amount = currency_amount * currency_rate[currency_name]
+ bgn_amount = currency_amount * currency_to_bgn_rate[currency_name]
# round it
bgn_amount.round(2)
end
def compare_prices(amount_1, currency_1, amount_2, currency_2)
# give Veselka what she wants
convert_to_bgn(amount_1, currency_1) \
- convert_to_bgn(amount_2, currency_2)
-end
+end

Здравей :)

Харесва ми, че си използвал хеш за курсовете. :) Имам някои забележки:

  • Тези коментари за излишни. Смяташ ли, че # round it ще ми помогне да разбера, че bgn_amount.round(2) закръглява? По-скоро само ще ми изгуби времето в четене. Такива очевидни неща е по-добре да не се коментират - кодът е достатъчно ясен.
  • Хешът не се ли побира на един ред (в 80 символа)?
  • # give Veselka what she wants също няма смисъл. Функцията изобщо интересува ли я коя е Веселка, за да си свърши работата? :) Като цяло, стреми се кода да говори сам за себе си, вместо да му трябват коментари. Този ми изглежда достатъчно прост за разбиране, че да няма нужда от тях.
  • Ако знакът - е на предния ред няма да има нужда от ескейпването на новия ред с \
convert_to_bgn(amount_1, currency_1) -
  convert_to_bgn(amount_2, currency_2)

И все пак ми се струва, че това ще се събере в 80 символа. Може да погледнеш и оператора <=>. :)

Напомням, че до крайния срок можеш да ни изпращаш колкото искаш решения и можеш да адресираш тези неща. :)

Здрасти :о

  • Коментарите ги сложих като един вид документация. Очевидно не е била нужна. Ще ги махна.

  • Относно подравняването: Когато отворих Atom, прозорецът беше по default на половин екран и просто исках дългите редове да се поберат в този размер. Би трябвало да няма проблем да са на цял ред. Ще го оправя.

Edit: Видях оператора <=> и си мислех дали да направя по този начин решението си. В сравнение с това, което съм написал в момента, не се ли връща по-малко информация? Освен че връщам число, което да отговаря на случаите, давам и с колко точно е разликата.

Петър обнови решението на 11.10.2015 22:10 (преди около 9 години)

def convert_to_bgn(currency_amount, currency_name)
- # define currency to bgn rates needed in this task inside a hash
- currency_to_bgn_rate = {bgn: 1,
- usd: 1.7408,
- eur: 1.9557,
- gbp: 2.6415}
+ currency_to_bgn_rate = {bgn: 1, usd: 1.7408, eur: 1.9557, gbp: 2.6415}
- # get amount in bgn
bgn_amount = currency_amount * currency_to_bgn_rate[currency_name]
- # round it
bgn_amount.round(2)
end
def compare_prices(amount_1, currency_1, amount_2, currency_2)
- # give Veselka what she wants
- convert_to_bgn(amount_1, currency_1) \
+ convert_to_bgn(amount_1, currency_1) - convert_to_bgn(amount_2, currency_2)
- - convert_to_bgn(amount_2, currency_2)
+end
-end