- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
Binary Mobile
- Краен срок
- 11.12.2012 12:00
Срокът за предаване на решения е отминал
Binary mobile
Binary mobile (всеки да си го превежда „на вкус“) е структура, която се състои от два пръта („клони“) с общ край (няма binary mobile без клони, или само с един клон, или с повече от два клона). Клоните имат определена дължина (строго положителна) и на свободния им край е закачена или проста тежест, или друг binary mobile.
Създайте клас Branch
, чийто конструктор приема два параметъра:
дължината клона и структурата, която е закачена за него:
b1 = Branch.new 10, 3 # b1 е клон с дължина 10 и тежест с тегло 3
b2 = Branch.new 8, 4.2 # b2 е клон с дължина 8 и тежест с тегло 4.2
Създайте клас BinaryMobile
, чийто конструктор приема 2 аргумента – ляв
и десен Branch
, съответно:
bm = BinaryMobile.new b1, b2
Теглото на един BinaryMobile
се изчислява като се сумират теглата,
закачени за клоните му. Дефинирайте метод BinaryMobile#weight
, който
да връща теглото на съответния binary mobile:
bm.weight # => 7.2
Един binary mobile се нарича балансиран, ако са изпълнени следните условия:
- Моментът, оказван от левия клон е равен на момента, оказван от
десния клон (молим за извинение хората, учили физика, чиито чувства
ще бъдат накърнени от грешните дефиниции :-)) Моментът, оказван от
клон, е равен на произведението на дължината на клона и теглото на
структурата, закачена на края му, например
b1
ще оказва момент30
, аb2
ще оказва момент33.6
. - Структурите, закачени на клоните също са балансирани. Приемаме, че простите тежести са балансирани.
Напишете метод BinaryMobile#balanced?
, който да казва дали съответния
binary mobile е балансиран:
bm.balanced? # => false
bm2 = BinaryMobile.new Branch.new(1, 2), Branch.new(2, 1)
bm2.balanced? # => true
Измислете си подходящи селектори за класа Branch. Тестовете ще
използват само интерфейса на BinaryMobile
(както и конструктора
на Branch
, естествено).
Възможно е на някои от вас задачата да ви заприлича на задача 2.29 от SICP. Има защо. :-)
Решения
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)