並びなおすっていうのがどういうことかよくわからんが
roteteさせるって事?
def my_sort(e, list)
if list.empty?
nil
elsif list.first == e or !(ind = list.index(e))
list
else
list[ind..-1] + list[0..ind-1]
# list.rotate(ind) #Ruby 1.9.2以上だとroteteがある
end
end
p my_sort('A', []) # => nil
p my_sort('X', ['A', 'B', 'C', 'D']) # => ["A", "B", "C", "D"]
p my_sort('A', ['A', 'B', 'C', 'D']) # => ["A", "B", "C", "D"]
p my_sort('C', ['A', 'B', 'C', 'D']) # => ["C", "D", "A", "B"]
p my_sort('D', ['A', 'B', 'C', 'D']) # => ["D", "A", "B", "C"]