Сортировка массива со стартером внутри массива - PullRequest
0 голосов
/ 19 ноября 2018

извините, у меня были проблемы с формулировкой моего вопроса.Чтобы объяснить это лучше:

I have a = ["alice", "jean", "bob"]

Теперь я хочу позволить пользователю выбрать, кто запустит игру.Если его джинсовый, новый массив должен выглядеть следующим образом:

a = ["jean", "bob", "alice"]

Пока это работает:

def sort_array_players(array_player, starter)
  sort_array_player = []
  array_player.map do |name|
    if name == starter && name == array_player[0]
      sort_array_player = [array_player[0], array_player[1], array_player[2]]
    elsif name == starter && name == array_player[1]
      sort_array_player = [array_player[1], array_player[2], array_player[0]]
    elsif name == starter && name == array_player[2]
      sort_array_player = [array_player[2], array_player[0], array_player[1]]
    end 
  end 
  puts sort_array_player
end

Я хочу рефракторить этот код, но я немного новРубин, я потратил 2 часа, пытаясь выяснить эту вещь.Я предполагаю, что вам нужно использовать each.with_index, а затем создать новый массив, начиная с первого, и следующий элемент будет с индексом стартера + 1 ..

Спасибо за помощь, ребята

1 Ответ

0 голосов
/ 19 ноября 2018

Как прокомментировал @rubish, вы можете использовать метод Array # rotate .

Вы можете использовать положительное целое число в качестве параметра count, чтобы вращать элементы против часовой стрелки, или отрицательные целые, чтобы вращать их по часовой стрелке..

a = ["alice", "jean", "bob"]
starter = "jean"
count = a.index(starter) # => 1

a.rotate(count) # => ["jean", "bob", "alice"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...