Решай 8, если на 6 так долго застреваешь.
Ну не всегда. Просто сильно компактный код долго понимать, но исполняется он не намного быстрее если сделать его понятней.
Нажмите, чтобы раскрыть...
ну я сторонник правил функция не больше 10 ~ 20 строк, не шире 70 ~ 80 символов 
порой конечно код распухает от этого и случается то, что можно назвать highly reusable & extensible nonsense, ака HREN, или попросту: хрень
когда вроде как функции короткие, но не ясно чьё больное воображение это писало
но в основном получается что-то весьма сносное и самодокументируемое, на мой взгляд
просто a.method_1().method_2().method_3().method_4() это не 1 строчка, а 4, если не больше (учитывая аргументы)