对不起,我在提出问题时遇到问题。 更好地解释:
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
我想修改这段代码,但是我对ruby还是有些陌生,我花了2个小时试图弄清楚这个问题。我的猜测是,您需要使用each.with_index,然后从第一个数组开始创建新数组,随后的元素将是索引为starter + 1的数组。
感谢帮助的人
答案 0 :(得分:0)
如@rubish所述,您可以使用Array#rotate方法。
您可以使用正整数作为count
参数来逆时针旋转项目,也可以使用负整数来顺时针旋转项目。
a = ["alice", "jean", "bob"]
starter = "jean"
count = a.index(starter) # => 1
a.rotate(count) # => ["jean", "bob", "alice"]