Денис обнови решението на 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
vsx + y
). Сложи нов ред между дефиницията на константата и дефиницията на метода. Не слагай space-ове в началото и края на hash - Числата в имената са леко криптични. Предпочитай думи (
first_currency
vscurrency_1
). Ограничението за брой символи не е оправдание :) - Четейки
CURRENCIES
бих очаквал да съдържа[:bgn, :eur, :usd, :gbp]
. Не получавам усещане за някакъв вид mapping. За щастие, в тази ситуация има термин - обменен курс