Isn't the "better" code wrong in the first example?
instead of "result = (1...padded.size-1).map do |i|" shouldn't be "result = (1...padded.size-2).map do |i|"?
instead of "result = (1...padded.size-1).map do |i|" shouldn't be "result = (1...padded.size-2).map do |i|"?
It's always felt deeply counter-intuitive to me because .. feels like it represents less than ... but that's a separate discussion.