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

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

Към профила на Кристиан Митов

Резултати

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

Код

def convert_to_bgn(value, currency)
value_bgn = case currency
when :gbp then value * 2.6415
when :usd then value * 1.7408
when :eur then value * 1.9557
else value
end
value_bgn.round(2)
end
def compare_prices(first_value, first_currency, second_value, second_currency)
first_price = convert_to_bgn(first_value, first_currency)
second_price = convert_to_bgn(second_value, second_currency)
first_price <=> second_price
end

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

........

Finished in 0.00672 seconds
8 examples, 0 failures

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

Кристиан обнови решението на 10.10.2015 21:06 (преди над 8 години)

+def convert_to_bgn(value, currency)
+ value_bgn = case currency
+ when :gbp then value * 2.6415
+ when :usd then value * 1.7408
+ when :eur then value * 1.9557
+ else value
+ end
+ value_bgn.round(2)
+end
+
+def compare_prices(value, currency, second_value, second_currency)
+ first_price = convert_to_bgn(value, currency)
+ second_price = convert_to_bgn(second_value, second_currency)
+ if first_price < second_price
+ rand((-1000)..(-1))
+ elsif first_price > second_price
+ rand(1..1000)
+ else
+ 0
+ end
+end

Здравей :)

  • В условието пише, че трябва да се върне положително число, отрицателно число или нула. Не пише, че то трябва да е случайно. Не разбирам този rand какво върши тук. Целият този if може да бъде заменен с един ред, използвайки оператора <=> или (в краен случай) - просто разликата на двете цени.
  • Има някаква асиметрия във value vs second_value и currency vs second_currency. Няма ли да е по-добре ако са first_value и second_value?

Напомням, че все още имаш време да предадеш ново решение :)

Кристиан обнови решението на 11.10.2015 18:12 (преди над 8 години)

def convert_to_bgn(value, currency)
value_bgn = case currency
when :gbp then value * 2.6415
when :usd then value * 1.7408
when :eur then value * 1.9557
else value
end
value_bgn.round(2)
end
-def compare_prices(value, currency, second_value, second_currency)
- first_price = convert_to_bgn(value, currency)
+def compare_prices(first_value, first_currency, second_value, second_currency)
+ first_price = convert_to_bgn(first_value, first_currency)
second_price = convert_to_bgn(second_value, second_currency)
- if first_price < second_price
- rand((-1000)..(-1))
- elsif first_price > second_price
- rand(1..1000)
- else
- 0
- end
+ first_price <=> second_price
end