#!/usr/bin/ruby

#
## https://rosettacode.org/wiki/Playing_cards
#

define Pip = <A 2 3 4 5 6 7 8 9 10 J Q K>;
define Suit = <♦ ♣ ♥ ♠>;

class Card(pip, suit) {
    method to_s { pip + suit }
}

class Deck(cards=[]) {

    method init {
        cards = gather {
            Pip.each { |p| Suit.each { |s| take(Card(p, s)) } }
        }
    }

    method shuffle {
        cards.shuffle!;
    }

    method deal { cards.shift };
    method to_s { cards.join(" ") };
}

var d = Deck();
say "Deck: #{d}";

var top = d.deal;
say "Top card: #{top}";

d.shuffle;
say "Deck, shuffled: #{d}";