Емилия обнови решението на 10.10.2015 23:33 (преди над 9 години)
+def convert_to_bgn(price, currency)
+ case currency
+ when :usd
+ (new_price = price * 1.7408).round(2)
+ when :eur
+ (new_price = price * 1.9557).round(2)
+ else
+ (new_price = price * 2.6415).round(2)
+ end
+end
+
+def compare_prices(price_one, currency_one, price_two, currency_two)
+ price_in_bgn_one = convert_to_bgn(price_one, currency_one)
+ price_in_bgn_two = convert_to_bgn(price_two, currency_two)
+ if(price_in_bgn_one > price_in_bgn_two)
+ 1 end
+ if(price_in_bgn_one == price_in_bgn_two)
+ 0 end
+ if(price_in_bgn_one < price_in_bgn_two)
+ -1 end
+end
Здравей :)
Имам някои коментари:
- По принцип използвай
elsif
иelse
вместо повтарящи сеif
-ове. Така няма да ти се налага да слагашend
навсякъде. :) - Нямаш нужда от проверката в
compare_prices
. Прочети за оператора<=>
. :) - Защо ти е
new_price
? Присвояваш стойност на променлива, която не използваш никога. - Сигурна ли си, че решението ти ще работи с всички валути?
- В Ruby всичко е израз и връща стойност - дори
case
. Тоест можеш да присвоиш резултата отcase
на променлива и после да го използваш. Можеш ли да използваш това знание, за да премахнеш малко дублиране на код? :)
Напомням, че до крайния срок остават цели 23 часа и половина, и можеш да ни изпратиш ново решение :)