Perfect shuffle: Difference between revisions

→‎{{header|Ruby}}: Polished somewhat
(→‎{{header|R}}: Gave new solution. Cleaned up formatting of older one.)
(→‎{{header|Ruby}}: Polished somewhat)
Line 1,857:
 
<lang ruby>def perfect_shuffle(deck_size = 52)
deck = (0.1..deck_size).to_a
original = deck.dup
shuffled_deck = [deck.first(deck_size / 2), deck.last(deck_size / 2)]
half = deck_size / 2
1.step do |i|
return i if deck == (shuffled_deck = shuffled_deck.transpose.flatten)
deck = deck.first(half).zip(deck.last(half)).flatten
shuffled_deck = [shuffled_deck.shift(deck_size / 2), shuffled_deck]
return i if deck == original
end
end
 
[8, 24, 52, 100, 1020, 1024, 10000].each do {|i| puts "Perfect Shufflesshuffles Requiredrequired for Deckdeck Sizesize #{i}: #{perfect_shuffle(i)}" end</lang>}
</lang>
 
{{out}}
<pre>
Perfect Shufflesshuffles Requiredrequired for Deckdeck Sizesize 8: 3
Perfect Shufflesshuffles Requiredrequired for Deckdeck Sizesize 24: 11
Perfect Shufflesshuffles Requiredrequired for Deckdeck Sizesize 52: 8
Perfect Shufflesshuffles Requiredrequired for Deckdeck Sizesize 100: 30
Perfect Shufflesshuffles Requiredrequired for Deckdeck Sizesize 1020: 1018
Perfect Shufflesshuffles Requiredrequired for Deckdeck Sizesize 1024: 10
Perfect Shufflesshuffles Requiredrequired for Deckdeck Sizesize 10000: 300</pre>
</pre>
 
=={{header|Rust}}==
1,149

edits