12 lines
357 B
Ruby
12 lines
357 B
Ruby
def perfect_shuffle(deck_size = 52)
|
|
deck = (1..deck_size).to_a
|
|
original = deck.dup
|
|
half = deck_size / 2
|
|
1.step do |i|
|
|
deck = deck.first(half).zip(deck.last(half)).flatten
|
|
return i if deck == original
|
|
end
|
|
end
|
|
|
|
[8, 24, 52, 100, 1020, 1024, 10000].each {|i| puts "Perfect shuffles required for deck size #{i}: #{perfect_shuffle(i)}"}
|