Module: HandRank

Defined in:
lib/hand_rank.rb,
lib/hand_rank/version.rb

Constant Summary collapse

HOME =
__FILE__.gsub( /.rb$/,'/')
VERSION =
"0.0.5"

Class Method Summary collapse

Class Method Details

.category(rb_rank) ⇒ Object



137
138
139
140
141
142
# File 'ext/hand_rank/hand_rank.c', line 137

VALUE rb_category( VALUE klass, VALUE rb_rank ){
  int rank = NUM2INT( rb_rank );
  int category = rank >> 12;

  return INT2NUM( category );
}

.category_key(rb_rank) ⇒ Object



151
152
153
154
155
156
157
158
# File 'ext/hand_rank/hand_rank.c', line 151

VALUE rb_category_key( VALUE klass, VALUE rb_rank ){
  int rank = NUM2INT( rb_rank );
  int category = rank >> 12;
  
  char* key = c_hand_category_key( category );

  return rb_str_new2( key );
}

.explain(rb_rank) ⇒ Object



160
161
162
163
164
165
166
167
168
169
# File 'ext/hand_rank/hand_rank.c', line 160

VALUE rb_explain( VALUE klass, VALUE rb_rank ){
  int rank = NUM2INT( rb_rank );
  int category = rank >> 12;
  int rank_in_category = rank & 0x00000FFF;
  VALUE category_key = rb_category_key( klass, rb_rank );

  VALUE result = rb_sprintf( "The hand is a %"PRIsVALUE"\nRank: %d Category: %d Rank in category: %d", category_key, rank, category, rank_in_category );

  return result;
}

.get(hand) ⇒ Object



6
7
8
9
# File 'lib/hand_rank.rb', line 6

def self.get( hand )
  cards = hand.to_a.map{|c| c.to_i }
  self.rank( cards )
end

.rank(rb_num_ary) ⇒ Object

***************************************************************************



128
129
130
131
132
133
134
135
# File 'ext/hand_rank/hand_rank.c', line 128

VALUE rb_rank( VALUE klass, VALUE rb_num_ary ){
  int length = RARRAY_LEN( rb_num_ary );
  int c_cards[ length ];

  convert_ruby_array_to_c_array( rb_num_ary, c_cards, length );

  return INT2NUM( c_rank_hand( c_cards, length ));
}

.rank_in_category(rb_rank) ⇒ Object



144
145
146
147
148
149
# File 'ext/hand_rank/hand_rank.c', line 144

VALUE rb_rank_in_category( VALUE klass, VALUE rb_rank ){
  int rank = NUM2INT( rb_rank );
  int rank_in_category = rank & 0x00000FFF;

  return INT2NUM( rank_in_category );
}