Решение на Първа задача от Денис Михайлов

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

Към профила на Денис Михайлов

Резултати

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

Код

EXCHANGE_RATES = {bgn: 1, eur: 1.9557, usd: 1.7408, gbp: 2.6415}
def convert_to_bgn(amount, currency)
(EXCHANGE_RATES[currency] * amount).round(2)
end
def compare_prices(first_amount, first_currency, second_amount, second_currency)
first_amount_in_bgn = convert_to_bgn(first_amount, first_currency)
second_amount_in_bgn = convert_to_bgn(second_amount, second_currency)
first_amount_in_bgn <=> second_amount_in_bgn
end

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

........

Finished in 0.00634 seconds
8 examples, 0 failures

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

Денис обнови решението на 11.10.2015 21:34 (преди около 9 години)

+CURRENCIES = { bgn: 1, eur: 1.9557, usd: 1.7408, gbp: 2.6415 }
+def convert_to_bgn(amount, currency)
+ (CURRENCIES[currency] * amount).round(2)
+end
+
+def compare_prices(amount_1, currency_1, amount_2, currency_2)
+ convert_to_bgn(amount_1, currency_1)<=>convert_to_bgn(amount_2, currency_2)
+end

Идейно решението е супер. Няколко насоки за подобрение:

  • Имаш няколко проблема със whitespaces. Погледни style guide-а. Индентирането става с два space-a. Слагай space-ове около операторите (x+y vs x + y). Сложи нов ред между дефиницията на константата и дефиницията на метода. Не слагай space-ове в началото и края на hash
  • Числата в имената са леко криптични. Предпочитай думи (first_currency vs currency_1). Ограничението за брой символи не е оправдание :)
  • Четейки CURRENCIES бих очаквал да съдържа [:bgn, :eur, :usd, :gbp]. Не получавам усещане за някакъв вид mapping. За щастие, в тази ситуация има термин - обменен курс

Денис обнови решението на 12.10.2015 09:51 (преди около 9 години)

-CURRENCIES = { bgn: 1, eur: 1.9557, usd: 1.7408, gbp: 2.6415 }
+EXCHANGE_RATES = {bgn: 1, eur: 1.9557, usd: 1.7408, gbp: 2.6415}
+
def convert_to_bgn(amount, currency)
- (CURRENCIES[currency] * amount).round(2)
+ (EXCHANGE_RATES[currency] * amount).round(2)
end
-def compare_prices(amount_1, currency_1, amount_2, currency_2)
- convert_to_bgn(amount_1, currency_1)<=>convert_to_bgn(amount_2, currency_2)
+def compare_prices(first_amount, first_currency, second_amount, second_currency)
+ first_amount_in_bgn = convert_to_bgn(first_amount, first_currency)
+ second_amount_in_bgn = convert_to_bgn(second_amount, second_currency)
+ first_amount_in_bgn <=> second_amount_in_bgn
end