Advertisement
funny_falcon

Untitled

Jan 13th, 2021
1,558
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.57 KB | None | 0 0
  1. Card = Struct.new(:suit, :rank) do
  2.   include Comparable
  3.  
  4.   def precedence      ; [SUITS_SCORES[self.suit], RANKS_SCORES[self.rank]] end
  5.   def rank_precedence ; RANKS_SCORES[self.rank] end
  6.   def suit_precedence ; SUITS_SCORES[self.rank] end
  7.    
  8.   def <=>(other) ; self.precedence <=> other.precedence end
  9.    
  10.   def to_s ; "#{self.suit}#{self.rank}" end
  11. end
  12.  
  13. Hand = Struct.new(:cards) do
  14.   def sort         ; Hand[self.cards.sort] end
  15.   def sort_by_rank ; Hand[self.cards.sort_by(&:rank_precedence)] end
  16.    
  17.   def to_s ; self.cards.map(&:to_s).join(', ') end
  18. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement