Марк обнови решението на 11.10.2015 20:59 (преди около 9 години)
+def convert_to_bgn(a, b)
+ if(b == :usd)
+ a = a * 1.7408
+ elsif(b == :eur)
+ a = a * 1.9557
+ elsif(b == :gbp)
+ a = a * 2.6415
+ end
+
+ a = a * 1000
+ remainder = a % 10
+ remainder > 5 ? a = a - remainder + 10 : a = a - remainder
+ a / 1000
+end
+
+def compare_prices(a, b, c, d)
+ if(convert_to_bgn(a, b) > convert_to_bgn(c, d))
+ 1
+ elsif(convert_to_bgn(a, b) == convert_to_bgn(c, d))
+ 0
+ else
+ -1
+ end
+
+end
- Ядрото и стандартната библиотека на Ruby са пълни с utility методи. Закръглянето звучи като да е нещо, което е нужно често. Изглежда почти невъзможно да няма нещо за закръгляне във
Float
класа - Проверките в
compare_prices
като че ли не бяха нужни. Можеше да използваш обикновено изваждане или магическия оператор ракетка. Така ще избегнеш и викането по два пъти наconvert_to_bgn
- Еднобуквени имена на променливи почти никога не са добра идея (освен за известни математически/физични формули). Опитай се да отговориш на въпроса "Какво всъщност значи тази стойност в контекста на решаваната задача?" и използвай имена, които отразяват отговора. Например тук
a
може да е цена,b
може да е валута - Защо беше празният ред на края на
compare_prices
? :)
Мога ли да изпратя нова подобрена версия на решението си
Разбира се, можеш да обновиш решението си колкото пъти искаш до края на срока за предаване.