Решение на Първа задача от Веселин Русинов

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

Към профила на Веселин Русинов

Резултати

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

Код

def convert_to_bgn(price, currency)
if (currency == :usd)
price = price * 1.7408
elsif (currency == :eur)
price = price * 1.9557
elsif (currency == :gbp)
price = price * 2.6415
end
price.round(2)
end
def compare_prices(first_price, first_currency, second_price, second_currency)
first_converted_price = convert_to_bgn(first_price, first_currency)
second_converted_price = convert_to_bgn(second_price, second_currency)
first_converted_price <=> second_converted_price
end

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

........

Finished in 0.00691 seconds
8 examples, 0 failures

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

Веселин обнови решението на 11.10.2015 13:49 (преди около 9 години)

+def convert_to_bgn price, currency
+ case currency
+ when :usd
+ convert_to_bgn_from_usd price
+ when :eur
+ convert_to_bgn_from_eur price
+ when :gbp
+ convert_to_bgn_from_gbp price
+ else
+ price
+ end
+end
+
+
+def convert_to_bgn_from_usd price
+ (price * 1.7408).round(2)
+end
+
+def convert_to_bgn_from_eur price
+ (price * 1.9557).round(2)
+end
+
+def convert_to_bgn_from_gbp price
+ (price * 2.6415).round(2)
+end
+
+def compare_prices(first_price, first_currency, second_price, second_currency)
+ first_converted_price = convert_to_bgn(first_price, first_currency)
+ second_converted_price = convert_to_bgn(second_price, second_currency)
+
+ if first_converted_price > second_converted_price
+ 1
+ elsif first_converted_price == second_converted_price
+ 0
+ else
+ -1
+ end
+end

Дух престарал си се:

  • не закръгляш в :bgn
  • слагай скоби около параметрите на методите, т.е. def convert_to_bgn(price, currency)
  • можеш да махнеш излишните методи convert_to_bgn_from_usd и т.н.
  • използвай променливи и не повтарай код в израза за смяна на курса
  • в compare_prices си си написал <=>, та.. погледни за него

Веселин обнови решението на 11.10.2015 23:38 (преди около 9 години)

-def convert_to_bgn price, currency
- case currency
- when :usd
- convert_to_bgn_from_usd price
- when :eur
- convert_to_bgn_from_eur price
- when :gbp
- convert_to_bgn_from_gbp price
- else
- price
+def convert_to_bgn(price, currency)
+ if (currency == :usd)
+ price = price * 1.7408
+ elsif (currency == :eur)
+ price = price * 1.9557
+ elsif (currency == :gbp)
+ price = price * 2.6415
end
+ price.round(2)
end
-
-def convert_to_bgn_from_usd price
- (price * 1.7408).round(2)
-end
-
-def convert_to_bgn_from_eur price
- (price * 1.9557).round(2)
-end
-
-def convert_to_bgn_from_gbp price
- (price * 2.6415).round(2)
-end
-
def compare_prices(first_price, first_currency, second_price, second_currency)
first_converted_price = convert_to_bgn(first_price, first_currency)
second_converted_price = convert_to_bgn(second_price, second_currency)
- if first_converted_price > second_converted_price
- 1
- elsif first_converted_price == second_converted_price
- 0
- else
- -1
- end
+ first_converted_price <=> second_converted_price
end