- ベストアンサー
正規表現の表現方法について
- 正規表現の表現方法について教えていただきたいです。
- じゃんけんの手を正規表現での表現方法について。
- それぞれの手を定数で表現しています。場にじゃんけんの手が012と出たときに並び替えた120や210もパターン認識させたいと考えています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
今、じゃんけんの参加者は3人のようですがもっと増えたらその都度、 新たに正規表現を考えるのでしょうか。 正規表現の勉強をするなら別ですが、もっとシンプルに考えたほうがいいのでは? たとえばこんな感じ。 ----------------------------------------------------------------------------- //'g','c','p'を要素としてじゃんけんをし、 //勝ったもののインデックスの配列を返す。 //あいこなら空配列。 function janken( hands ){ //出された手を手ごとのインデックス配列を格納する連想配列に取り込む var handHash={ 'g':[], 'c':[], 'p':[] } for( var i=0,len=hands.length; i<len; i++ ){ handHash[ hands[i] ].push(i) } var gFlag=(handHash.g.length > 0)? 1:0 var cFlag=(handHash.c.length > 0)? 1:0 var pFlag=(handHash.p.length > 0)? 1:0 //手が3つに分かれたら空配列を返す(あいこ) if ( gFlag * cFlag * pFlag ){ return [] } //手が1つだけなら空配列を返す(あいこ) if ( gFlag + cFlag + pFlag == 1 ){ return [] } //チョキvsパー if ( !gFlag ){ return handHash.c } //パーvsグー if ( !cFlag ){ return handHash.p } //グーvsチョキ if ( !pFlag ){ return handHash.g } } ----------------------------------------------------------------------------- ※javaでなくjavascriptですが意味は分かると思います。
補足
ballvilleさん 回答ありがとうございます。 連想配列を使用すれば、3人以上も対応出来るんですね。 今回は人数は3人で人数を固定してじゃんけんをするという仕様です。 if文やswicth文で対応しようとすると条件分岐が多くなるので 講義で習った正規表現で条件を記述できないかと考えている所です。