Я совершенно не знаком с изучением рубинов, и я работаю над программой Learn by Chris Pine. Одно из упражнений, которые он предлагает попробовать, - это написать метод тасования (я знаю метод #shuffle
). До сих пор, я пришел с этим кодом, который, кажется, чтобы сделать работу:Написание метода тасования в Ruby
array_to_shuffle = []
puts "Give me a list of words to shuffle, press enter on an empty line for the result."
input = gets.chomp
while input != ""
array_to_shuffle = array_to_shuffle.push(input)
input = gets.chomp
end
def recursive_shuffle(array_to_shuffle, shuffled_array = [])
return shuffled_array unless array_to_shuffle.size > 0
array_size = array_to_shuffle.size()
random_number = rand(1..array_size)-1
element_transfered = array_to_shuffle [random_number]
shuffled_array = shuffled_array.push(element_transfered)
array_to_shuffle.delete(element_transfered)
recursive_shuffle(array_to_shuffle, shuffled_array)
end
puts recursive_shuffle(array_to_shuffle)
Однако это довольно многословно, учитывая, что она делает. Есть ли способ улучшить это?
Ммм кажется более подходящим для http://codereview.stackexchange.com/ – niceman
Вы хотите для реализации этого точного алгоритма или вы хотите каким-то образом перетасовать, просто не используйте '# shuffle'? – ndn
@niceman достаточно! Спасибо за информацию! – Heisenmali