public static int GetNumberOfSameNumbers(LottoNumber n1, LottoNumber n2)
 {
     int count = 0;
     foreach (int num in n1.Numbers)
     {
         if (n2.Numbers.Contains(num))
             count++;
     }
     return count;
 }
        public MainWindow()
        {
            InitializeComponent();

            //HistoricalNumbers numbers = new HistoricalNumbers();
            //numbers.Load();

            _last = new LottoNumber();
            _forelast = new LottoNumber();
            _generatedNumbers = new List<LottoNumber>();

            _availableNumbers = new List<int>();
            InitAvailableNumbers();
        }
        public void Load()
        {
            List<string> lines = File.ReadLines("data\\lotto.txt").ToList();
            lines.RemoveAt(0);

            for (int index = 0; index < lines.Count; index++)
            {
                string s = lines[index];
                string[] numbers = s.Split('\t');
                LottoNumber number = new LottoNumber();
                for (int i = 0; i < 6; i++)
                {
                    number.Numbers[i] = int.Parse(numbers[i + 3]);
                }
                number.SuperNumber = int.Parse(numbers[10]);

                if (index > 0)
                {
                    number.SameNumbersWithLast = GetNumberOfSameNumbers(number, _numbers.Last());
                    number.IsSuperNumberTheSameAsLastTime = number.SuperNumber == _numbers.Last().SuperNumber;
                }
                if (index > 1)
                {
                    number.SameNumberWithForelast = GetNumberOfSameNumbers(number, _numbers[index - 2]);
                }

                _numbers.Add(number);
            }

            Evoluate1();
            Evoluate2();
            Evo3();
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            _forelast.Numbers[0] = int.Parse(Forelast1.Text);
            _forelast.Numbers[1] = int.Parse(Forelast2.Text);
            _forelast.Numbers[2] = int.Parse(Forelast3.Text);
            _forelast.Numbers[3] = int.Parse(Forelast4.Text);
            _forelast.Numbers[4] = int.Parse(Forelast5.Text);
            _forelast.Numbers[5] = int.Parse(Forelast6.Text);

            _forelast.SuperNumber = int.Parse(ForeLastSuper.Text);

            _last.Numbers[0] = int.Parse(Last1.Text);
            _last.Numbers[1] = int.Parse(Last2.Text);
            _last.Numbers[2] = int.Parse(Last3.Text);
            _last.Numbers[3] = int.Parse(Last4.Text);
            _last.Numbers[4] = int.Parse(Last5.Text);
            _last.Numbers[5] = int.Parse(Last6.Text);

            _last.SuperNumber = int.Parse(LastSuper.Text);

            int numberOfLotte = int.Parse(NumberOfLotto.Text);

            Random random = new Random();
            int i = 0;
            while (i < numberOfLotte)
            {
                InitAvailableNumbers();
                LottoNumber newNumber = new LottoNumber();
                for (int j = 0; j < 6; j++)
                {
                    int index = random.Next(0, 49 - j);
                    newNumber.Numbers[j] = _availableNumbers[index];
                    _availableNumbers.RemoveAt(index);
                }
                if (!Checker1(newNumber))
                {
                    continue;
                }
                if (!Checker2(newNumber))
                {
                    continue;
                }

                newNumber.SuperNumber = random.Next(0, 10);
                _generatedNumbers.Add(newNumber);
                i++;
            }
            StringBuilder output = new StringBuilder();
            int counter = 1;
            foreach (var lottoNumber in _generatedNumbers)
            {
                Array.Sort(lottoNumber.Numbers);
                output.Append("Number " + counter + ":");
                foreach (var number in lottoNumber.Numbers)
                {
                    output.Append("\t" + number);
                }
                output.Append("\t Super: " + lottoNumber.SuperNumber);
                output.AppendLine();
                output.AppendLine();
                counter++;
            }
            OutputTB.Text = output.ToString();
        }
        private bool Checker2(LottoNumber number)
        {
            for (int i = 0; i < 4; i++)
            {
                for (int j = i + 1; j < 5; j++)
                {
                    for (int k = j + 1; k < 6; k++)
                    {
                        Tripel<int> tripel = new Tripel<int>(number.Numbers[i], number.Numbers[j], number.Numbers[k]);
                        if (_generatedTripels.Any(item => item.Equals(tripel)))
                        {
                            return false;
                        }
                        _generatedTripels.Add(tripel);

                    }

                }
            }
            return true;
        }
        private bool Checker1(LottoNumber number)
        {
            bool isValid = !(HistoricalNumbers.GetNumberOfSameNumbers(number, _forelast) > 2);

            if (HistoricalNumbers.GetNumberOfSameNumbers(number, _last) > 2)
            {
                isValid = false;
            }
            return isValid;
        }