Anonymous user
Card shuffles: Difference between revisions
added Ruby solution
m (J: remove sentence which seems unnecessary with current task description) |
(added Ruby solution) |
||
Line 693:
shuffle: (J♣ 2♠ 4♦ A♦ K♥ 6♦ 5♦ 8♣ 2♦ T♥ 4♠ 3♣ 7♦ 9♠ T♦ J...
</pre>
=={{header|Ruby}}==
Two methods to solve the requirements, and a third one as bonus.
<lang Ruby>
def riffle deck
left, right = deck.partition{rand(10).odd?}
new_deck = []
# the condition below is true when both left and right stacks are empty
until ((left_card=left.pop).to_i + (right_card=right.shift).to_i).zero? do
new_deck << left_card if left_card
new_deck << right_card if right_card
end
new_deck
end
def overhand deck
new_deck = []
until deck.empty? do
stack = deck[-rand(deck.size * 0.2), deck.size]
new_deck += stack
deck -= stack
end
new_deck
end
def bonus deck
deck.sort { |a, b| Time.now.to_i % a <=> Time.now.to_i % b }
end
deck = [*1..20]
puts riffle(deck).inspect
puts overhand(deck).inspect
puts bonus(deck).inspect
</lang>
=={{header|Tcl}}==
|