Решение на Втора задача от Румен Палетов
Резултати
- 6 точки от тестове
- 0 бонус точки
- 6 точки общо
- 11 успешни тест(а)
- 0 неуспешни тест(а)
Код
Лог от изпълнението
........... Finished in 0.01019 seconds 11 examples, 0 failures
История (2 версии и 3 коментара)
Румен обнови решението на 28.10.2012 22:15 (преди около 12 години)
Това с Filter
и Operation
е C код. Ужасно неприемливо при това. Изумен съм, че си успял да се впишеш в ограниченията, предвид че трябва да пазят точно от такива опити.
Вместо да го правиш така, опитай да създадеш малка йерархия от критерии. Пробвай да направиш по един наследни за всеки вид филтър. После пробвай да видиш дали не могат да намалиш класовете по някакъв начин.
Също така, не спазваш конвенции на места. И не съм убеден дали имаш правописни греши или ползваш британски правопис.
При всички случаи, за момента вървиш към някакво количество наказателни точки.
Съгласен съм за C кода, просто ми хареса идеята да си направя критериите като дърво :).
Какво имаш в предвид под наследник за всеки вид филтър. Един клас с два наследника – един за & и един за | или нещо друго?
Може ли да те помоля да конкретизираш кои конвенции точно не спазвам, защото не ми е много ясно.
И мерси за обратната връзка ;).
Бъркаш нещо в имената. Няма да ти кажа какво, искам да го откриеш сам.
Отделно, в match?
и fulfil?
не ти достига място да имплементираш методите така, както искаш. Ако напишеш if
-овете както трябва, няма да се съберат в ограниченията. Това трябва да те наведе на мисълта, че правиш нещо грешно.
Иначе, имах предвид, че можеш да направиш Criteria
като йерархия. Няма да ти казвам как, обаче. Само ще ти подскажа, че имплементацията на Collection#filter
трябва да изглежда така:
Collection.new @songs.select { |song| criteria.met_by? song }