@@ -28,9 +28,10 @@ impl From<Hand> for Evaluator {
2828
2929impl Evaluator {
3030 pub fn find_ranking ( & self ) -> Ranking {
31- None . or_else ( || self . find_flush ( ) )
31+ None . or_else ( || self . find_straight_flush ( ) )
3232 . or_else ( || self . find_4_oak ( ) )
3333 . or_else ( || self . find_3_oak_2_oak ( ) )
34+ . or_else ( || self . find_flush ( ) )
3435 . or_else ( || self . find_straight ( ) )
3536 . or_else ( || self . find_3_oak ( ) )
3637 . or_else ( || self . find_2_oak_2_oak ( ) )
@@ -98,14 +99,16 @@ impl Evaluator {
9899 self . find_rank_of_straight ( self . 0 ) . map ( Ranking :: Straight )
99100 }
100101 fn find_flush ( & self ) -> Option < Ranking > {
102+ self . find_suit_of_flush ( ) . map ( |suit| {
103+ let bits = u16:: from ( self . 0 . of ( & suit) ) ;
104+ let rank = Rank :: from ( bits) ;
105+ Ranking :: Flush ( rank)
106+ } )
107+ }
108+ fn find_straight_flush ( & self ) -> Option < Ranking > {
101109 self . find_suit_of_flush ( ) . and_then ( |suit| {
102110 self . find_rank_of_straight_flush ( suit)
103111 . map ( Ranking :: StraightFlush )
104- . or_else ( || {
105- let bits = u16:: from ( self . 0 . of ( & suit) ) ;
106- let rank = Rank :: from ( bits) ;
107- Some ( Ranking :: Flush ( rank) )
108- } )
109112 } )
110113 }
111114
@@ -291,7 +294,7 @@ mod tests {
291294
292295 #[ test]
293296 fn full_house_over_flush ( ) {
294- let eval = Evaluator :: from ( Hand :: try_from ( "Kh Ah Ad As Ks Qs Js" ) . unwrap ( ) ) ;
297+ let eval = Evaluator :: from ( Hand :: try_from ( "Kh Ah Ad As Ks Qs Js 9s " ) . unwrap ( ) ) ;
295298 let ranking = eval. find_ranking ( ) ;
296299 let kickers = eval. find_kickers ( ranking) ;
297300 assert_eq ! ( ranking, Ranking :: FullHouse ( Rank :: Ace , Rank :: King ) ) ;
0 commit comments