アプリ版:「スタンプのみでお礼する」機能のリリースについて

三人でじゃんけんをするプログラムを作るために
法則性を探しています。

グーを0,チョキを1,パーを2とした時に
あいこであるパターンは
000,012,021,021,102,111,120,201,210,222
勝ちのパターンは
001,010,011,112,121,122,200,202,220
負けのパターンは
002,020,022,100,101,110,211,212,221
でした。(違っていたら申し訳ないです。)

ここから法則を探そうと思うととりあえず、あいこの
パターンは3つの数字を足すと0,3,6のどれかになり
3の倍数になっていることがわかりました。

ですが、勝ちと負けは法則性が見つけられません。

もしかすると、このやり方以外にも3人のじゃんけんの
結果を示すプログラムを導く方法はあるかもしないので
もしご存知でしたらご教授お願いします。

A 回答 (4件)

アルゴリズム系の問題は苦手だけど回答に挑戦。




じゃんけんする3人を A, B, C
グー = 0 チョキ = 1 パー = 2

とるする場合

(A + B + C) ÷ 3 のあまりが

:0の場合
 あいこ

: 1の場合
 ひとりだけ負け

 A = B なら C の負け
 B = C なら A の負け
 それ以外なら B の負け

: 2の場合
 ひとりだけ勝ち

 A = B なら C の勝ち
 B = C なら A の勝ち
 それ以外なら B の勝ち


ここから例えば A が勝ったかどうかは
((A + B + C) ÷ 3 のあまり = 1 かつ B = C でない) または ((A + B + C) ÷ 3 のあまり = 2 かつ B = C)
で判定できる。

TRUE に 1 FALSE に 0 という値が与えらるのなら
((A + B + C) ÷ 3 のあまり - 1) = (B = C)
でAの勝ちが分かる。


まちがってないかな…o(;-_-;)oドキドキ♪
    • good
    • 2
この回答へのお礼

ご返信遅れて申し訳ありませんでした。
大変参考になりました。
一人勝ちの場合と二人勝ちの場合に分けるという
発想はありませんでした。

お礼日時:2009/11/27 01:08

勝ちの定義と負けの定義はどうなってますか?


001が勝ちとなってますが、1(チョキ)の一人負けにもとれます。
002が負けとなってますが、2(パー)の一人勝ちにもとれます。
    • good
    • 2
この回答へのお礼

記入漏れで申し訳ありませんでした。
最初の数字の人から見た勝ち負けを記入しました。
付き合っていただきありがとうございました。

お礼日時:2009/11/27 01:09

パターンというか…、「誰かから見た勝ち負け」が分かれば良いのですよね。


だとしたら、(既に分かっていらっしゃるとは思いますが)全員の手を順番に見ていくのが一番単純なアルゴリズムになると思いますよ。3人以上の場合にも対応できます。

別の考え方として、じゃんけんの手がループしていることを利用することが考えられますね。
(0,0,2) = (1,1,0) = (2,2,1)
上記三つはすべて同じ強弱関係を指していますので、互いに変更しても勝敗は変わりません。勝ち負けを調べたいところの手を0にするような前処理を行えば、条件判断はとても簡単になります。
(0,0,1) (0,1,1) (0,1,0)
(0,0,2) (0,2,2) (0,2,0)
これしか残りません。
3人のじゃんけんなら、このことを利用してより簡単に判断する方法がありそうですね。

あとは、勝ちのパターンと負けのパターンとが鏡合わせになっていることを何らかの形で利用することが出来たら面白そうです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
とりあえず、3人のじゃんけんプログラムは
作ることができました^^

お礼日時:2009/11/27 01:10

問題視しているものが良く分からないのですが・・・



全パターン列挙する必要はないのでは?
あいこは、0,1,2 があった場合、または全員が同じ場合
一人勝ち、二人勝ちの場合は、二人がおなじであと一人がどうなっているか
これだけでは?
もしかして If 文とか Case 文で列挙しようとしていませんか?それでも 3の3条で27通りしかありませんが。
    • good
    • 0
この回答へのお礼

そうですね。
一人勝ち、二人勝ちのパターンを組み合わせることにより
アルゴリズムを組むことができました。
ご回答ありがとうございました。

お礼日時:2009/11/27 01:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています