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
- .category(rb_rank) ⇒ Object
- .category_key(rb_rank) ⇒ Object
- .explain(rb_rank) ⇒ Object
- .get(hand) ⇒ Object
-
.rank(rb_num_ary) ⇒ Object
***************************************************************************.
- .rank_in_category(rb_rank) ⇒ Object
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 );
}
|