Skip to content

openpoker straight_flush bug #1

@luosiyong

Description

@luosiyong

hand.erl
test_rank_9(),
if add a test below, it's a straight_flush
?match({straight_flush, 2#00011111000000, 0}, ?score("AC QS JC TC 9C 8C 7C")),

a way to fix this bug, is modify the is_straight_flush like this:
is_straight_flush(Rep) ->
Temp = make_mask(Rep),
if
Temp band 2#10000000000000 > 0 ->
Value = Temp bor 1;
true ->
Value = Temp
end,
is_straight_flush(Value, 2#11111000000000, Rep).

is_straight_flush(_, Mask, Rep) when Mask < 2#11111 ->
junk;

is_straight_flush(Value, Mask, Rep) when Mask >= 2#11111 ->
if
Value band Mask =:= Mask ->
case is_flush(Mask, Rep) of
{_, High, _} ->
{straight_flush, High, 0};
_ ->
is_straight_flush(Value, Mask bsr 1, Rep)
end;
true ->
is_straight_flush(Value, Mask bsr 1, Rep)
end.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions