module CardsLib::IsSet
Public Class Methods
verify(cards, rules = [:unique, :paired], specs = {})
click to toggle source
# File lib/cards_lib/is_set.rb, line 4 def verify(cards, rules = [:unique, :paired], specs = {}) max = specs.fetch(:max) {Float::INFINITY} min = specs.fetch(:min) { 3 } rules.all? {|r| send(r, cards) } && (min..max).include?(cards.count) end
Private Class Methods
ordered(cards)
click to toggle source
# File lib/cards_lib/is_set.rb, line 25 def ordered(cards) cards.sort.inject_while?(:ordered?) end
paired(cards)
click to toggle source
# File lib/cards_lib/is_set.rb, line 17 def paired(cards) cards.inject_while?(:paired?) end
suited(cards)
click to toggle source
# File lib/cards_lib/is_set.rb, line 21 def suited(cards) cards.inject_while?(:suited?) end
unique(cards)
click to toggle source
# File lib/cards_lib/is_set.rb, line 11 def unique(cards) cards.combination(2).all? {|a, b| a != b } end