Решение на Първа задача от Божидар Горов

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

Към профила на Божидар Горов

Резултати

  • 5 точки от тестове
  • 0 бонус точки
  • 5 точки общо
  • 7 успешни тест(а)
  • 1 неуспешни тест(а)

Код

def convert_to_bgn(price, currency)
currencies = {usd: 1.7408, eur: 1.9557, gbp: 2.6415, bgn: 1}
price * currencies[currency]
end
def compare_prices(price_one, currency_one, price_two, currency_two)
price_one_bgn = convert_to_bgn(price_one, currency_one)
price_two_bgn = convert_to_bgn(price_two, currency_two)
(price_one_bgn - price_two_bgn).round
end

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

....F...

Failures:

  1) #convert_to_bgn rounds to 2 digits after the point
     Failure/Error: expect(convert_to_bgn(123, :usd)).to eq 214.12
       
       expected: 214.12
            got: 214.11839999999998
       
       (compared using ==)
     # /tmp/d20151012-23382-wfkrsd/spec.rb:19:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

Finished in 0.00712 seconds
8 examples, 1 failure

Failed examples:

rspec /tmp/d20151012-23382-wfkrsd/spec.rb:18 # #convert_to_bgn rounds to 2 digits after the point

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

Божидар обнови решението на 11.10.2015 23:29 (преди около 9 години)

+def convert_to_bgn(price, currency)
+ currencies = {usd: 1.7408, eur: 1.9557, gbp: 2.6415, bgn: 1}
+
+ price * currencies[currency]
+end
+
+def compare_prices(price_one, currency_one, price_two, currency_two)
+ price_one_bgn = convert_to_bgn(price_one, currency_one)
+ price_two_bgn = convert_to_bgn(price_two, currency_two)
+ (price_one_bgn - price_two_bgn).round
+end
  • В условието идеята беше да закръглиш convert_to_bgn, a не compare_prices. Също закръглянето трябва да е до втория знак
  • first_price описва малко по-точно ситуацията от price_one
  • Четейки currencies бих очаквал вътре да има [:usd, :eur, :gbp, :bgn]. Има малко по-точна терминология в случая - обменен курс
  • Можеш да оставиш един празен ред между "изчисленията" и връщането на стойност в compare_prices както си направил в convert_to_bgn

Като изключим първата точка, решението е добро. Другите са само дребни неща