Here’s another use of methods. Notice that when we send an array as a parameter, changes in the function do update the value to the caller.
One incidental thing we have not seen before is parallel assignment in the shuffle function which exchanges two values.
# Place the array in a random order. Floyd's alg.
def shuffle(arr)
for n in 0...arr.size
targ = n + rand(arr.size - n)
arr[n], arr[targ] = arr[targ], arr[n] if n != targ
end
end
# Make strange declarations.
def pairs(a, b)
a << 'Insane'
shuffle(b)
b.each { |x| shuffle(a); a.each { |y| print y, " ", x, ".\n" } }
end
first = ['Strange', 'Fresh', 'Alarming']
pairs(first, ['lemonade', 'procedure', 'sounds', 'throughway'])
print "\n", first.join(" "), "\n"



