Решение на Първа задача от Кристиян Тодоров

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

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

Резултати

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

Код

def convert_to_bgn(value, currency)
multiplier = if currency == :bgn
1
elsif currency == :usd
1.7408
elsif currency == :gbp
2.6415
elsif currency == :eur
1.9557
end
(multiplier * value).round(2)
end
def compare_prices(value_1, currency_1, value_2, currency_2)
convert_to_bgn(value_1, currency_1) <=> convert_to_bgn(value_2, currency_2)
end

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

........

Finished in 0.00697 seconds
8 examples, 0 failures

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

Кристиян обнови решението на 10.10.2015 21:16 (преди около 9 години)

+def convert_to_bgn (value, currency)
+ if currency == :bgn
+ (value * 1).round(2)
+ elsif currency == :usd
+ (value * 1.7408).round(2)
+ elsif currency == :gbp
+ (value * 2.6415).round(2)
+ elsif currency == :eur
+ (value * 1.9557) .round(2)
+ end
+end
+
+
+def compare_prices(value_1, currency_1, value_2, currency_2)
+ convert_to_bgn(value_1, currency_1) <=> convert_to_bgn(value_2, currency_2)
+end

Здравей :)

Имам 1-2 коментарчета:

  • Имаш две излишни празни места - на ред 1 и ред 9.
  • Има много повторение на (value * число).round(2). Можеш ли да се сетиш как да го направиш без да повтаряш този код? Напомням, че в Ruby всичко е израз и връща стойност - дори if и case. Тоест можеш да присвоиш резултата от if и case на променлива и после да го използваш. :)

Все още имаш време да предадеш ново решение :)

Кристиян обнови решението на 11.10.2015 19:03 (преди около 9 години)

-def convert_to_bgn (value, currency)
- if currency == :bgn
- (value * 1).round(2)
- elsif currency == :usd
- (value * 1.7408).round(2)
- elsif currency == :gbp
- (value * 2.6415).round(2)
- elsif currency == :eur
- (value * 1.9557) .round(2)
- end
+def convert_to_bgn(value, currency)
+ multiplier = if currency == :bgn
+ 1
+ elsif currency == :usd
+ 1.7408
+ elsif currency == :gbp
+ 2.6415
+ elsif currency == :eur
+ 1.9557
+ end
+ (multiplier * value).round(2)
end
-
def compare_prices(value_1, currency_1, value_2, currency_2)
convert_to_bgn(value_1, currency_1) <=> convert_to_bgn(value_2, currency_2)
end