Решение на Първа задача от Александър Иванов
Към профила на Александър Иванов
Резултати
- 6 точки от тестове
- 0 бонус точки
- 6 точки общо
- 8 успешни тест(а)
- 0 неуспешни тест(а)
Код
Лог от изпълнението
........ Finished in 0.0073 seconds 8 examples, 0 failures
История (6 версии и 5 коментара)
Александър обнови решението на 13.10.2012 21:00 (преди около 12 години)
Александър обнови решението на 14.10.2012 19:28 (преди около 12 години)
Александър обнови решението на 14.10.2012 19:29 (преди около 12 години)
Александър обнови решението на 14.10.2012 23:44 (преди около 12 години)
Александър обнови решението на 15.10.2012 16:53 (преди около 12 години)
Тук може и да не съм прав, но поне аз очаквам memo[val] ? memo[val] << key : memo[val] = [key]
да е свързано с присвояване. В случая със side effect вероятно ще се чете по-лесно с if else
- Каквото Иван каза -
memo[val] ? memo[val] << key : memo[val] = [key]
е просто "сладък" начин да напишеш нещо, което трябва да бъде на няколко реда. Можеш да пробваш и с: memo[val] ||= [] memo[val] << key Отделно,memo
е лошо име за това, което правиш. - Интервали от вътрешната страна на фигурните скоби когато подаваш блог.
map { |val| count val }
- Пише се
value
, а неval
. Нищо не печелиш с кратки имена, освен объркване. - Следния израз се чете трудно:
divisors << val if abs % val == 0 &&
divisors.all? {|div| val % div != 0}
Ако
if
-а ти не е на един ред, не ползвай постфиксен запис - Начина по който конструираш fizzbuzz е просто сладък. Ако искаш да е четим, по-добре е да имаш условие с четири клона.
Съгласен съм, но if ... elsif ...
не е ли някак тромав запис в сравнение с примерно
({1 => value, 3 => :fizz, 5 => :buzz, 15 => :fizzbuzz})[value.gcd 15]
което също реализира условие с четири клона в по-декларативен стил (disclaimer: имаше подобно решение някъде сред домашните).
Не, if/elsif
е по-добре, защото е доста по-четимо и по-очевидно. Наистина, кода е повече, но за сметка на това е кристално ясен. Няма НОД-ове, няма хешове, няма какво да мислиш за случая с 1. Просто ясно и четимо.
Има в случаи, в които малко повече, но по-ясен код е по-добре.
Хешовете в руби не ми изглеждат по-неясни от ифове, по също толкова естествен начин могат да съпоставят резултат на условие.
Иначе съм съгласен за четимостта в конкретния случай.