開発者になって（いや、なる前に）最初に書くべきプログラム -じゃんけんゲーム-

#がいよう
研修ではJavaとかC#とかいろいろやらせると思うけど、多分、最初にやらせるのはゲーム系がいいんではないか？と思います。うちの課長は20年前、マインスイーパを課題で出されたそうです。

# 競技プログラミング
競プロというと、あるお題が出され、テキストベースのテストデータが入力されると、ある結果を出力するように期待される。
今回は、じゃんけんプログラムを普通に作ったところで面白くないから、自分が出す手と勝負する回数をあらかじめ入力し、CPUと勝負した結果を出力するというじゃんけんを作る。

###問題文

自分が勝負したい回数(N)を最初に入力し、その後、自分が出す予定の手(グー＝0、チョキ＝1、パー＝2)をN回入力する。その後、CPUと対戦をし、その結果(あなたの勝ち＝a、負け＝b、あいこ＝c)を出力せよ。

###制約

- 1≦N≦100

###入力
入力は以下の形式で標準入力される。

```
N
012
```

###出力

```
a
b
c
```

###入力例1

```
5
02102
```

###出力例

```
あなたの勝ち：2回
CPUの勝ち：1回
あいこ：2回
```

なお、あくまでこれは基本回答であるからして、創造力(クリエイティビティ:配点20)が高い出力結果を出してもよい。



###回答例

```C#:qiita.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Janken
{
    public class Program
    {
        public static string[] jankenAA ={"\nグー！　　 ＿_\n　　　　　/｣｣｣｣\n　　　　 ｜っ丿\n　 ∧_∧ / ／\n　( ･ω･)／\n　(つ　 ﾉ\n　 ｕ-ｕ"
                , "\nチョキ！\n　　　　　(Ｖ)\n　　　　　/ｱE)\n　 ∧_∧ / ／\n　( ･ω･)／\n　(つ　 ﾉ\n　 ｕ-ｕ"
                , "\nパー！\n　　　　　｢｢｢h\n　　　　 Ｃ　ﾉ\n　 ∧_∧ / ／\n　( ･ω･)／\n　(つ　 ﾉ\n　 ｕ-ｕ"
        };

        public static void Main(string[] args)
        {
            Console.WriteLine("※説明：最初に何回じゃんけんをするか回数を入力する。\nその後、回数分の自分の出すじゃんけん数値を入れる。\nグー＝0、チョキ＝1、パー＝2");
            try
            {
                int n = int.Parse(Console.ReadLine());

                int[] jankMe = new int[n];

                for (int i = 0; i < n; i++)
                {
                    string jankme = Console.ReadLine();
                    if (!(jankme.Equals("0") || jankme.Equals("1") || jankme.Equals("2")))
                    {
                        Console.WriteLine("じゃんけん番号じゃないです");
                        i -= 1;
                        continue;
                    }
                    jankMe[i] = int.Parse(jankme);
                }

                for (int j = 0; j < n; j++)
                {
                    //Console.Clear();
                    Console.WriteLine("最初はグー、じゃんけん…");
                    int pjank = Player(jankMe[j]);
                    int cpjank = Cpu();
                    Judge(pjank, cpjank);
                }
                Statistics(judgeList);
                Console.ReadKey(true);

            }
            catch (Exception e)
            {
                string m = e.Message;
                Console.WriteLine(m);
                Console.ReadKey(true);
            }
        }
        /// <summary>
        /// プレイヤー
        /// </summary>
        /// <returns>じゃんけん番号</returns>
        public static int Player(int jankMeNow)
        {
            string janken = null;
            bool loopFlg = true;

            //while (loopFlg)
            //{
            //janken = Console.ReadLine();
            janken = jankMeNow.ToString();
            if (!(janken.Equals("0") || janken.Equals("1") || janken.Equals("2")))
            {
                Console.WriteLine("0か1か2で入れてください。");
                loopFlg = true;
            }
            else
            {
                loopFlg = false;
            }
            //}
            int jank = int.Parse(janken);
            Display(0, jank);
            return jank;
        }

        /// <summary>
        /// CPU
        /// </summary>
        /// <returns>じゃんけん番号</returns>
        public static int Cpu()
        {
            int randomInt = Janken();
            Display(1, randomInt);
            return randomInt;
        }

        /// <summary>
        /// 画面への表示
        /// </summary>
        /// <param name="isPlayer"></param>
        /// <param name="jank"></param>
        public static void Display(int isPlayer, int jank)
        {
            if (isPlayer == 0)
            {
                Console.Write("あなたは、");
            }
            else
            {
                Console.Write("コンピューターは、");
            }

            Console.WriteLine(jankenAA[jank]);
        }

        /// <summary>
        /// ランダム関数
        /// </summary>
        public static Random rand = new Random();

        /// <summary>
        /// CPUがランダムで出すじゃんけんの関数
        /// </summary>
        /// <returns>ランダムで出した数</returns>
        public static int Janken()
        {
            int jank = rand.Next(3);
            return jank;
        }

        /// <summary>
        /// ジャッジ
        /// </summary>
        /// <param name="player"></param>
        /// <param name="cpu"></param>
        
        public static List<int> judgeList = new List<int>();

        public static void Judge(int player, int cpu)
        {
            int judge = 0;

            if ((player == 0 && cpu == 1) || (player == 1 && cpu == 2) || (player == 2 && cpu == 0))
            {
                Console.WriteLine("【プレイヤーが勝ち】");
                judge = 0;
            }
            else if ((cpu == 0 && player == 1) || (cpu == 1 && player == 2) || (cpu == 2 && player == 0))
            {
                Console.WriteLine("【CPUが勝ち】");
                judge = 1;
            }
            else
            {
                Console.WriteLine("【あいこ】");
                judge = 2;
            }
            judgeList.Add(judge);
            Console.Write("\n");
        }
        public static void Statistics(List<int> jlist)
        {
            int playerWin = jlist.Where(j=>j==0).Count();
            int cpuWin = jlist.Where(j=>j==1).Count();
            int draw = jlist.Where(j => j == 2).Count();
            Console.WriteLine(string.Format("プレイヤーの勝利数:{0}\nCPUの勝利数:{1}\nあいこ数:{2}", playerWin,cpuWin,draw));
        }
    }
}
```
###入力結果

```
※説明：最初に何回じゃんけんをするか回数を入力する。
その後、回数分の自分の出すじゃんけん数値を入れる。
グー＝0、チョキ＝1、パー＝2
3
0
1
2

```

###出力結果

```
最初はグー、じゃんけん…
あなたは、
グー！　　 ＿_
　　　　　/｣｣｣｣
　　　　 ｜っ丿
　 ∧_∧ / ／
　( ･ω･)／
　(つ　 ﾉ
　 ｕ-ｕ
コンピューターは、
グー！　　 ＿_
　　　　　/｣｣｣｣
　　　　 ｜っ丿
　 ∧_∧ / ／
　( ･ω･)／
　(つ　 ﾉ
　 ｕ-ｕ
【あいこ】

最初はグー、じゃんけん…
あなたは、
チョキ！
　　　　　(Ｖ)
　　　　　/ｱE)
　 ∧_∧ / ／
　( ･ω･)／
　(つ　 ﾉ
　 ｕ-ｕ
コンピューターは、
パー！
　　　　　｢｢｢h
　　　　 Ｃ　ﾉ
　 ∧_∧ / ／
　( ･ω･)／
　(つ　 ﾉ
　 ｕ-ｕ
【プレイヤーが勝ち】

最初はグー、じゃんけん…
あなたは、
パー！
　　　　　｢｢｢h
　　　　 Ｃ　ﾉ
　 ∧_∧ / ／
　( ･ω･)／
　(つ　 ﾉ
　 ｕ-ｕ
コンピューターは、
チョキ！
　　　　　(Ｖ)
　　　　　/ｱE)
　 ∧_∧ / ／
　( ･ω･)／
　(つ　 ﾉ
　 ｕ-ｕ
【CPUが勝ち】

プレイヤーの勝利数:1
CPUの勝利数:1
あいこ数:1

```

はい。