[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/09 11:16 / Filesize : 192 KB / Number-of Response : 848
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

スレを勃てるまでもないC/C++の質問はここで 5



617 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:17:38 ]
役が成り立っているか脳内で判定してると思うが、
まあそういう役が成り立っているかを判定する関数があるとする。

int check_toitsu(const toitsu_t *toitsu);  /* ちゃんと対子として成り立っていれば 1 を、そうでなければ 0 を返す */
int check_ipeko(const ipeko_t *ipeko);   /* ちゃんと一盃口として成り立っていれば 1 を、そうでなければ 0 を返す */

これを使って ryanpeko_t 型の値が本当に二盃口として成り立っているのかをチェックする関数を作ると、こうなって、

int check_ryanpeko(const ryanpeko_t *ryanpeko) {
 return
  check_ipeko(&ryanpeko->ipeko[0]) &&
  check_ipeko(&ryanpeko->ipeko[1]) &&
  check_toitsu(&ryanpeko->toitsu);
}

chitoitsu_t 型の値が本当に七対子として成り立っているのかをチェックする関数を作ると、こうなる。

int check_chitoitsu(const chitoitsu_t *chitoitsu) {
 int i;
 for (i = 0; i < 7; i++)
  if (!check_toitsu(chitoitsu->toitsu[i]))
   return 0;
 return 1;
}

んで、手牌 tehai をこのチェック関数に渡すには、こんな感じになるわけだ。

if (check_ryanpeko((const ryanpeko_t*)&tehai))
 puts("二盃口として解釈可能です");

if (check_chitoitsu((const chitoitsu_t*)&tehai))
 puts("七対子として解釈可能です");






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<192KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef