Вы можете использовать следующее:
list.first((list.length/2).ceil) # will convert 1.5 to 2
И
list.last((list.length/2).floor) # will convert 1.5 to 1
Проблема, с которой вы столкнулись, состоит в том, что [7,8,9][3/2]
возвращает 8
, а логика 3/2
(list.size / 2
) использовался в first_half
и last_half
.