Я делаю какую-то рекурсию, где вычисляю левую и правую части массива. У меня есть рабочий код, но интересно, если бы это можно было написать более кратко. Вот код:
left = calculate(x[0]) right = calculate(x[1]) a = Array.new(0) a << left a << right self(a)
Попробуйте это
self(x[0..1].map{|e| calculate(e)})
Если x имеет только два элемента, вы можете опустить [0..1].
[0..1]
Это может быть записано как:
left = calculate(x[0]) right = calculate(x[1]) self([left, right])
Вы также можете встроить переменные left и right, но я думаю, что это сделает код менее наглядным.
left
right
можно переписать
self(x[0..1].map(&method(:calculate)))
Таким образом вы потратите еще три символа, но вы были бы впереди, если бы e был длиной в три символа или более.
e