Ich bin ziemlich neu im Lernen von Ruby und arbeite gerade an Learn to Program von Chris Pine. Eine der Übungen, die er vorschlägt, ist das Schreiben einer Shuffle-Methode (ich kenne die Methode #shuffle
). Bisher habe ich mit diesem Code kommen, die die Arbeit zu tun scheint:Eine Shuffle-Methode in Ruby schreiben
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)
Es ist jedoch ziemlich langatmig überlegen, was es tatsächlich der Fall ist. Kann ich das irgendwie verbessern?
hmmm scheint besser geeignet für http://codereview.stackexchange.com/ – niceman
Möchten Sie um diesen exakten Algorithmus zu implementieren oder möchtest du irgendwie mischen, benutze einfach '# shuffle' nicht? – ndn
@niceman faire genug! Danke für die Information! – Heisenmali