Решение на Първа задача от Николай Коцев

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

Към профила на Николай Коцев

Резултати

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

Код

def convert_to_bgn(amount, currency)
exchange_rate = {
usd: 1.7408,
eur: 1.9557,
gbp: 2.6415,
bgn: 1.0000
}
(exchange_rate[currency] * amount).round(2)
end
def compare_prices(amount_a, currency_a, amount_b, currency_b)
convert_to_bgn(amount_a, currency_a) <=>
convert_to_bgn(amount_b, currency_b)
end

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

........

Finished in 0.0074 seconds
8 examples, 0 failures

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

Николай обнови решението на 11.10.2015 01:27 (преди над 8 години)

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

Изглежда добре и къдраво.

  • ако ще пишеш hash на много редове го прави така:
foo = {
  bar: 123,
  zar: '345'
}
  • exchange_rate_hash няма нужда от суфикса _hash
  • в compare_prices май си попаднал на някакви ограничения, ако използваш например def compare_prices(amount_a, currency_a, amount_b, currency_b) ще стане по-добре.

Желаех да използвам: def compare_prices(amount1, currency1, ammount2, currency2) Но regex-a skeptic явно не обича числа залепени за думи твърде много :) . Благодаря ти за корекциите.

И само едно питане. Ок ли е да правя convert_to_bgn(amount_a, currency_a) <=> convert_to_bgn(amount_b, currency_b) използвайки оператора в края на реда?

Николай обнови решението на 11.10.2015 20:11 (преди над 8 години)

def convert_to_bgn(amount, currency)
- exchange_rate_hash = { usd: 1.7408,
- eur: 1.9557,
- gbp: 2.6415,
- bgn: 1.0000 }
- (exchange_rate_hash[currency] * amount).round(2)
+ exchange_rate = {
+ usd: 1.7408,
+ eur: 1.9557,
+ gbp: 2.6415,
+ bgn: 1.0000
+ }
+ (exchange_rate[currency] * amount).round(2)
end
-def compare_prices(first_amount, first_currency, second_amount,
- second_currency)
- convert_to_bgn(first_amount, first_currency) <=>
- convert_to_bgn(second_amount, second_currency)
+def compare_prices(amount_a, currency_a, amount_b, currency_b)
+ convert_to_bgn(amount_a, currency_a) <=>
+ convert_to_bgn(amount_b, currency_b)
end