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

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

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

Резултати

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

Код

RATES = {bgn: 1, usd: 1.7408, eur: 1.9557, gbp: 2.6415}
def convert_to_bgn(price, currency)
(price * RATES[currency]).round(2)
end
def compare_prices(first_price, first_currency, second_price, second_currency)
unless first_currency == second_currency
first_price = convert_to_bgn(first_price, first_currency)
second_price = convert_to_bgn(second_price, second_currency)
end
first_price <=> second_price
end

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

........

Finished in 0.00631 seconds
8 examples, 0 failures

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

Андрея обнови решението на 11.10.2015 19:17 (преди над 8 години)

+RATES = {bgn: 1, usd: 1.7408, eur: 1.9557, gbp: 2.6415}
+
+def convert_to_bgn(price, currency)
+ (price * RATES[currency]).round(2)
+end
+
+def compare_prices(first_price, first_currency, second_price, second_currency)
+ unless first_currency.equal? second_currency
+ first_price = convert_to_bgn(first_price, first_currency)
+ second_price = convert_to_bgn(second_price, second_currency)
+ end
+ first_price <=> second_price
+end

Супер. Само дребни неща:

  • Беше ли нужна проверката в compare_prices? Дори и да беше, би следвало да използваш == в подобна ситуация
  • Един дребен трик, който подобрява естетиката на кода е да подравняваш еднакви контрукции на съседни редове. Добави един space в compare_prices (така че двете = да са едно под друго) и виж дали няма да ти хареса повече

Привет,

Относно проверката - според мен има смисъл, тъй като така потенциално избягваме ненужно конвертиране. За сравняването действително не бях сигурен кой от четирите начина да избера - на лекцията не ми стана много ясно, а явно и не съм разбрал много добре обясненията в SO.

Относно подравняването - не съм свикнал по този начин, но предполагам, че ако свикна - ще ми изглежда по-добре. :)

Андрея обнови решението на 12.10.2015 11:18 (преди над 8 години)

RATES = {bgn: 1, usd: 1.7408, eur: 1.9557, gbp: 2.6415}
def convert_to_bgn(price, currency)
(price * RATES[currency]).round(2)
end
def compare_prices(first_price, first_currency, second_price, second_currency)
- unless first_currency.equal? second_currency
- first_price = convert_to_bgn(first_price, first_currency)
+ unless first_currency == second_currency
+ first_price = convert_to_bgn(first_price, first_currency)
second_price = convert_to_bgn(second_price, second_currency)
end
first_price <=> second_price
end