こんにちは。
7月に入社した、もちおと申します。
このブログでは研修を通した学びや気づきを連携する場として活用していきたいと思います。
同期と同じ処理のコーディングに差異がありました。
私のコーディングは後者なのですが、「工夫したけど実は処理が増えてました」
というのは本末転倒なので、全通り試行を行った際の関係演算子による比較回数の数で
それぞれを比較してみたいと思います。
if (userHand == npcHand) { System.out.println("引き分け"); } else if (userHand == 1 && npcHand == 2 || userHand == 2 && npcHand == 3 || userHand == 3 && npcHand == 1) { System.out.println("ユーザの勝ち"); }else{ System.out.println("コンピュータの勝ち"); }
if (com_input == user_input){ System.out.println("あいこです。"); }else if (com_input == ((user_input + 1) % 3)){ System.out.println("ユーザーの勝ちです。"); }else if (com_input == ((user_input + 2) % 3)){ System.out.println("コンピューターの勝ちです"); }else { System.out.println("error!");}
じゃんけんの「グー/チョキ/パー」を「1/2/3」としています。
■関係演算子による比較回数
前者:30回(ORとANDを回数に含めず)
後者:12回(+数式計算9回)
今回の比較条件では後者の方が関係演算子による比較回数は少ないようです。
しかし比較の際に計算を行っているので、その分の処理が発生しています。
(処理時間は計測したらどちらも0msでした!笑)
コーディングのよしあしは目的別(拡張性や処理速度)で観点は変わりますが、
とりあえず今回は工夫したほうが効率良さそうです。
無理やりまとめてしまいましたが、今回は以上になります。
今後はコーディングの際に大事にすべき観点を意識していきたいです。