スタッフBLOG

じゃんけんプログラム-解答2015年05月23日

こんばんは、チューターの河合です。

今回は珍しく時間があるので、先日出したじゃんけんのプログラムの問題

http://www.shingaku-jyuku.com/blog/%E3%81%98%E3%82%83%E3%82%93%E3%81%91%E3%82%93%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0.html

 

の解答を書きたいと思います。

 

いくつか考え方はあると思うのですが、今回紹介する解き方は以下の通り。

(他に面白い解答があったら紹介して下さい。ブログで紹介させていただきますね)

 

 

[解答1]

グー    = 2

チョキ = 1

パー   = 0

と値を決めます。

すると

グー - チョキ + 3 = 2 – 1 + 3 = 4

チョキ – パー + 3 = 1 – 0 + 3 = 4

パー   –  グー + 3 = 0 – 2 + 3 = 1

となって、勝ちパターンの時は3で割った余りが常に1になります。

(+3 はしなくてもいいです。

パー – グーの時にでる -2 を3で割った余りの説明が面倒だったので足しました。(実は、数学的には-2を3で割った余りは1なんです。ご存知でしたか?)

3を足しても3で割った余りには影響しないですよね。)

逆に

チョキ - グー + 3 = 1 – 2 + 3 = 2

パー – チョキ + 3 = 0 – 1 + 3 = 2

グー   –  パー + 3 = 2 – 0 + 3 = 5

となって、負けパターンのときは3で割った余りが常に2になります。

 

あいこの時は数が同じなので引き算すると値が0になりますね。

 

したがって

条件1

(Aの出したじゃんけんの手の数字) – (Bの出したじゃんけんの手の数字) = 0 → あいこ

条件2

(Aの出したじゃんけんの手の数字) – (Bの出したじゃんけんの手の数字) + 3

を 3 で割った余りが 1  → Aの勝ち

条件3

(Aの出したじゃんけんの手の数字) – (Bの出したじゃんけんの手の数字) + 3

を 3 で割った余りが 2  → Bの勝ち

 

という3つの条件で、A,Bのどちらが勝ったかを表示させることができますね。

 

こういう風に整数で状態を置き換えてやると、プログラムを簡単にすることが出来ることがあります。

 

 

こういう問題はすこし見慣れないかもしれませんが、どうだったでしょうか。

 

と、結構書いてしまったので(もっと書こうと思えばこの話を延々数学のお話にできるんですが)そろそろこのあたりにしておきます。

 

では。