Решение на Първа задача от Кузман Белев

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

Към профила на Кузман Белев

Резултати

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

Код

def convert_to_bgn(amount, currency)
hash = {bgn: 1, usd: 1.7408, eur: 1.9557, gbp: 2.6415}
(amount*hash[currency]).round(2)
end
def compare_prices(price_a, currency_a, price_b, currency_b)
convert_to_bgn(price_a, currency_a) - convert_to_bgn(price_b, currency_b)
end

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

........

Finished in 0.00642 seconds
8 examples, 0 failures

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

Кузман обнови решението на 08.10.2015 01:08 (преди около 9 години)

+def convert_to_bgn(amount, currency)
+ if currency.eql? :gbp
+ (amount*2.6415).round(2)
+ elsif currency.eql? :usd
+ (amount*1.7408).round(2)
+ elsif currency.eql? :eur
+ (amount*1.9557).round(2)
+ else
+ amount
+ end
+end
+
+def compare_prices(price_a, currency_a, price_b, currency_b)
+ convert_to_bgn(price_a, currency_a) - convert_to_bgn(price_b, currency_b)
+end

Можеш и по-добре с convert_to_bgn. Тоест:

  • всичко се повтаря :/ можеш да запазиш обменния курс в променлива и тн..
  • eql? ? използвай == ако ще правиш такива неща. eql? се използва за да се провери дали две неща са един същи ключ за Hash, което ме подсеща погледни какво е Hash (даже го използвай ;)).
  • не закръгляш bgn

compare_prices изглежда добре, може да използваш <=>, но и така става

Кузман обнови решението на 08.10.2015 10:05 (преди около 9 години)

def convert_to_bgn(amount, currency)
- if currency.eql? :gbp
- (amount*2.6415).round(2)
- elsif currency.eql? :usd
- (amount*1.7408).round(2)
- elsif currency.eql? :eur
- (amount*1.9557).round(2)
- else
- amount
- end
+ hash = {bgn: 1, usd: 1.7408, eur: 1.9557, gbp: 2.6415}
+ (amount*hash[currency]).round(2)
end
def compare_prices(price_a, currency_a, price_b, currency_b)
convert_to_bgn(price_a, currency_a) - convert_to_bgn(price_b, currency_b)
end