フィルターのクリア

Filter/identify characters within a cell array

1 回表示 (過去 30 日間)
Ole Hansen
Ole Hansen 2012 年 7 月 5 日
Say you have a cell array:
cell_array={'Kh','8h','8d','Kd','Ks'}
where h=hearts, d=diamonds, s=spades. In poker, the given combination would correspond to a full house (i.e. a pair and a set).
How do I identify a full house and not a set, a pair or two pairs?
As of now, I identify a set by searching for 3 identical values, e.g. three kings:
idKings=cellfun(@(x)any(ismember('K',x)),cell_array);
if sum(idKings)==3;
...
end
but how do I apply rules such that a full house is identified, and not a pair, a set or two pairs?

採用された回答

Andrei Bobrov
Andrei Bobrov 2012 年 7 月 5 日
編集済み: Andrei Bobrov 2012 年 7 月 5 日
try this is code
value1 = cellfun(@(x)x(1),cell_array,'un',0);
[a,b,b] = unique(value1);
i1 = histc(b,1:max(b));
t = ismember(a,'K');
out = all(i1(t) == 3 & i1(~t) == 2);
  1 件のコメント
Ole Hansen
Ole Hansen 2012 年 7 月 5 日
Interesting. I havent thought about employing a histc. Thank you for the idea!
I thought that one could easily modify the "full house approach" to a simpiler case: two pair. However, it actually seems more difficult since one does not need to consider only 2 alike and 3 others alike, but rather 2 alike in two different pairs but also a third single value.
How does one identify these?

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeGraph and Network Algorithms についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by