Пример #1
0
        private void getAnagrams(object state)
        {
            bRunning3 = true;
            string  word = state + "";
            Permute p    = new Permute();

            p.setper(word);
            for (int i = word.Length; i > 0; i--)
            {
                if (!bRunning3)
                {
                    break;
                }
                var tl = p.Permutations.Where(x => x.Length == i).ToList();
                foreach (var w in tl)
                {
                    if (!bRunning3)
                    {
                        break;
                    }

                    if (diff(dtOld, DateTime.Now).TotalSeconds > 5)
                    {
                        this.Invoke((MethodInvoker) delegate
                        {
                            label6.Text = p.Permutations.Count + "";
                            dtOld       = DateTime.Now;
                            label8.Text = diff(dtStart, DateTime.Now).TotalSeconds + "";
                        });
                    }

                    p.setper(w.Substring(0, i - 1));
                }
            }


            List <string> strings = new List <string>();

            foreach (string str in p.Permutations.Distinct <string>().ToArray())
            {
                if (checkBox1.Checked || lw.BinarySearch(str) > 0)
                {
                    strings.Add(str);
                }
            }

            foreach (string str in strings.OrderBy(x => x).OrderByDescending(x => x.Length))
            {
                this.Invoke((MethodInvoker) delegate
                {
                    listView1.Items.Add(str);
                });
            }

            this.Invoke((MethodInvoker) delegate
            {
                label6.Text        = listView1.Items.Count + "";
                progressBar1.Style = ProgressBarStyle.Blocks;
                button3.Text       = "Start";
                label8.Text        = diff(dtStart, DateTime.Now).TotalSeconds + "";
            });
            bRunning3 = false;
        }
Пример #2
0
        private void getAnagrams(object state)
        {
            bRunning3 = true;
            string word = state+"";
            Permute p = new Permute();
            p.setper(word);
            for(int i=word.Length;i>0;i--)
            {
                if (!bRunning3)
                    break;
                var tl = p.Permutations.Where(x=>x.Length==i).ToList();
                foreach (var w in tl)
                {
                    if (!bRunning3)
                        break;

                    if (diff(dtOld, DateTime.Now).TotalSeconds > 5)
                    {

                        this.Invoke((MethodInvoker)delegate
                        {
                            label6.Text = p.Permutations.Count + "";
                            dtOld = DateTime.Now;
                            label8.Text = diff(dtStart, DateTime.Now).TotalSeconds + "";
                        });                    
                    }

                    p.setper(w.Substring(0, i - 1));
                }
            }


            List<string> strings = new List<string>();
            foreach (string str in p.Permutations.Distinct<string>().ToArray())
                if (checkBox1.Checked || lw.BinarySearch(str) > 0)
                    strings.Add(str);

            foreach (string str in strings.OrderBy(x => x).OrderByDescending(x => x.Length))
                this.Invoke((MethodInvoker)delegate
                {
                    listView1.Items.Add(str);
                });

            this.Invoke((MethodInvoker)delegate
            {
                label6.Text = listView1.Items.Count+"";
                progressBar1.Style = ProgressBarStyle.Blocks;
                button3.Text = "Start";
                label8.Text = diff(dtStart, DateTime.Now).TotalSeconds+"";
            });
            bRunning3 = false;
        }