Чтобы разбить массив на две равные части, я бы сделал это,
>> a = [1,2,3,4,5]
=> [1, 2, 3, 4, 5]
>> a.in_groups_of( (a.size/2.0).ceil ) if a.size > 0
=> [[1, 2, 3], [4, 5, nil]]
Теперь у меня есть вложенный массив, который содержит элементы nil, если размер массива нечетный. Как удалить элементы nil из вложенных массивов? Я хочу сделать что-то вроде:
a.compact
Но, к сожалению, это не работает, Ruby удаляет только нулевые элементы на первом уровне, а не рекурсивно. Имеет ли рубин какие-либо хорошие решения для этой проблемы?