湖畔男児の上京物語 -2ページ目

湖畔男児の上京物語

気ままにブログを更新します。

じゃんけんの勝敗を判定するプログラムを書く機会があり、

 

単純にswitch caseで、

 自分が"パー"の時に、相手が"パー"ならあいこ、

 自分が"パー"の時に、相手が"グー"なら勝ち、

 自分が"パー"の時に、相手が"チョキ"なら負け、

  :

 

と、9通り書いていたのだが、

たったの1行で判定できるロジックというものがあり、

ちょっと感動しましたハッ

 

 

まず、じゃんけんの判定表は以下の通りです

  相手
グー チョキ パー
自分 グー あいこ 勝ち 負け
チョキ 負け あいこ 勝ち
パー 勝ち 負け あいこ

 

ここで、グー、チョキ、パーを以下のように定義します。
 
グー  : 0
チョキ : 1
パー  : 2
 
 
そして、自分の手から相手の手を引き算しますひらめき電球
 
例えば、自分の手が「グー」で、相手の手が「チョキ」だったら、
「グー(0)」 - 「チョキ(1)」  =  -1
 
という感じで。
結果は、以下の表のようになりますひらめき電球
  相手
グー(0) チョキ(1) パー(2)
自分 グー(0) 0 -1 -2
チョキ(1) 1 0 -1
パー(2) 2 1 0


上記の表から、

 
あいこは、 0
勝ちは、  -1か2
負けは、  1か-2
 
という結果になっています上差し
 
 
ここで、なんとなく、最初のじゃんけん勝敗表と似たような法則性があることに気づきますルンルン
 
 
結果の数値に3を足して、さらに3で割った余りを出すとどうなるかコーヒー
 
 
あいこは、0だったので、
(0 + 3) % 3 = 0
 
勝ちは、-1か2だったので、
(-1 + 3) % 3 = 2
or
(2 + 3) % 3 = 2
 
負けは、1か-2だったので、
(1 + 3) % 3 = 1
or
(-2 + 3) % 3 = 1
 
ということは、
 
  相手
グー チョキ パー
自分 グー 0 2 1
チョキ 1 0 2
パー 2 1 0

 

 

はい。。。

一番初めのじゃんけん勝敗表と全く同じ結果になります滝汗

 

 
(「自分の手」 - 「相手の手」 + 3) % 3
 
の式で、勝敗結果が出てくるのですチーン
 
 
このロジック、天才ですね拍手