#
# A standard deck of 52 playing cards consists of four suits:
# spades (♠), hearts (♥), diamonds (♦), and clubs (♣).
#
# Each suit contains 13 ranks:
# Ace, 2, 3, 4, 5, 6, 7, 8, 9, 10, Jack, Queen, King.
#
# Cards of spades and clubs are black, while hearts and diamonds are red.
#
# Color is informational only — it does not affect shuffling or random selection.
#
#
# This program picks 5 random cards from a standard 52‑card deck.
#
# It uses:
# - Arrays to store ranks, suits, and the deck
# - shuffle for efficient randomization (Ruby uses Fisher–Yates internally)
# - Functions for clean structure
#
# Algorithm:
# 1. Build the deck (52 strings).
# 2. Shuffle using shuffle.
# 3. Print the first 5 cards.
#
def build_deck
ranks = ["2","3","4","5","6","7","8","9","10","J","Q","K","A"]
suits = ["Clubs", "Diamonds", "Hearts", "Spades"]
deck = []
# Combine each rank with each suit → 52 unique cards
suits.each do |suit|
ranks.each do |rank|
deck << "#{rank} of #{suit}"
end
end
deck
end
def shuffle_deck(deck)
# Ruby's shuffle uses Fisher–Yates under the hood
deck.shuffle!
end
def main
# Step 1: Build the deck
deck = build_deck
# Step 2: Shuffle the deck
shuffle_deck(deck)
# Step 3: Draw the first 5 cards
puts "Your 5 random cards:"
5.times { |i| puts deck[i] }
end
main
#
# run:
#
# Your 5 random cards:
# 9 of Clubs
# 2 of Diamonds
# 6 of Clubs
# J of Diamonds
# K of Hearts
#