- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
def rotate_array(arr, i)
i = i%arr.size
return arr if i == 0
left = arr[0...i].reverse
right = arr[i..arr.size].reverse
arr = left + right
arr.reverse
end
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−99
def rotate_array(arr, i)
i = i%arr.size
return arr if i == 0
left = arr[0...i].reverse
right = arr[i..arr.size].reverse
arr = left + right
arr.reverse
end
https://knaidu.gitbooks.io/problem-solving/content/arrays/rotate_array.html
вообще не понял зачем reverse
http://ideone.com/9fVLsq
> arr = left + right
Возможно, я что-то не понимаю в ваших рубях, но на первый взгляд тут противоречие.
Автор кода вроде как хочет поиграть в иммутабельность и вернуть новый массив, но его мега оптимизация с if i == 0 ломает всю семантику: вернётся не новый массив, а ссылка на входной аргумент. Последующие модификации результата rotate могут менять (или не менять) оригинальный массив в зависимости от того, чему равнялось i. Удачной отладки.