はい、数的論理っていうと難しく聞こえますね、すみません(* ̄∇ ̄)ノ

ま、連続する自然数の積の証明なるものがありまして

(俺も調べて知ったんですが)

それを応用して、ゲームプログラムを作ろうというものです

 

実際のプログラムをば

 

 private int Color_check(int t)
        {
            var black = button_color_index.Select((p, q) => new { Contains = p, Index = q })
                                          .Where(ano => ano.Contains == 1 && ano.Index >= 1 && ano.Index <= button_color_index.Length - 1)
                                          .Select(ano => ano.Index);
            black.ToList();

 

この部分で、黒ボタンの配列のIndexをList化してます
ぶっちゃけ、ネットの記事をそのまま持ってきました(笑)

Linqですね、ただし意味はほとんどわかってません(笑)


            var white = button_color_index.Select((p, q) => new { Contains = p, Index = q })
                                          .Where(ano => ano.Contains == 2 && ano.Index >= 1 && ano.Index <= button_color_index.Length - 1)
                                          .Select(ano => ano.Index);
            white.ToList();

 

以降は、積の証明の数的論理の部分です

○連続するm個の整数の積はm!の倍数になる.

n(n+1)(n+2)···(n+m−1)はm!で割り切れる.

こんな数的論理があるらしいのです、Indexの数値を掛けてます


            float black_count;
            float white_count;
            black_count = 1;
            white_count = 1;

            foreach (int i in black)
            {
                black_count *= i;
            }

            foreach(int i in white)
            {
                white_count *= i;
            }

            float black_list_number;
            float white_list_number;
            black_list_number = Factorial(black.Count());
            white_list_number = Factorial(white.Count());

            if(black_count/black_list_number == Convert.ToInt32(black_count / black_list_number))
            {
                black_judge = true;
            }
            else
            {
                black_judge = false;
            }
         
            if(white_count/white_list_number == Convert.ToInt32(black_count / black_list_number))
            {
                white_judge = true;
            }
            else
            {
                white_judge = false;
            }
            Console.WriteLine(black_count);
            Console.WriteLine(black_list_number);
            Console.WriteLine(black_judge);
            return t;

        }

で以下は、階乗のためのメソッドつくり
        public int Factorial(int n)
        {
            if(n==0)
            {
                return 1;
            }
            return n * Factorial(n - 1);
        }

 

これもね、良く分かってないんすぶっちゃけ(;•̀ω•́)

retunrnは値を返すからっていうけど、入る値はどこまで?

うーん、いつの間に掛けるの終わってんの(;•̀ω•́)

 

と、いう感じですが

幾分のバグはあるものの一応動きます

 

忘備録でしたヽ(•̀ω•́ )ゝ✧