【发布时间】:2017-07-21 20:16:04
【问题描述】:
我是 ruby 的新手,我有一个程序可以接收多个名字并将它们分成两个对,然后将奇怪的人随机分组。有时它工作得很好,有时它会把额外的人扔进他们自己的数组中,我不知道为什么。我知道有一种更简洁的方法可以做到这一点,但我只是想了解代码是如何工作的。例如,它应该返回 "Apple" "Banana" "Orange" 作为 ["Banana", "Orange", "Apple"] 并且大多数时候会返回,但有时它会给我 ["Banana","Orange",] [“苹果”]有什么建议吗?
def randomArray
classNames = []
puts "Please enter a list of names to sort"
while true
input = gets.chomp
break if input.empty?
classNames << input
end
classRandom = classNames.shuffle
splitNames = classRandom.each_slice(2).to_a
arrayPos = 0
splitNames.length.times do
if splitNames[arrayPos].length == 2
arrayPos+=1
else splitNames[arrayPos].length == 1
splitNames.sample << splitNames[arrayPos].pop
arrayPos+=1
end
end
x = 0
splitNames.length.times do
break if splitNames[x].empty?
puts "Group number #{x+1} is #{splitNames[x]}"
x+=1
end
end
randomArray
【问题讨论】: