Ejemplo n.º 1
0
        private void GenerateAnagrams(object sender, EventArgs e)
        {
            LettersTextBox.Enabled = false;
            Bag LettersTextBox_bag = new Bag(LettersTextBox.Text);

            ListView.Items.Clear();
            TypeToolStripMenuItem.Enabled = false;
            RunToolStripMenuItem.Enabled  = false;
            ViewToolStripMenuItem.Enabled = false;
            m_start_time          = DateTime.Now;
            ElapsedTimeLabel.Text = "00:00:00";
            Timer.Enabled         = true;
            ProgressBar.Minimum   = 0;
            ProgressBar.Value     = 0;
            Anagrams.anagrams(LettersTextBox_bag, m_dictionary, 0,

                              // bottom of main loop
                              delegate()
            {
                ProgressBar.PerformStep();
                Application.DoEvents();
            },

                              // done pruning
                              delegate(uint recursion_level, List <bag_and_anagrams> pruned_dict)
            {
                if (recursion_level == 0)
                {
                    ProgressBar.Maximum = pruned_dict.Count;
                    Application.DoEvents();
                }
            },

                              // found a top-level anagram
                              delegate(strings words)
            {
                string display_me = "";
                foreach (string s in words)
                {
                    if (display_me.Length > 0)
                    {
                        display_me += " ";
                    }
                    display_me += s;
                }

                ListView.Items.Add(display_me);
                ListView.EnsureVisible(ListView.Items.Count - 1);
                ResultLabel.Text = ListView.Items.Count.ToString() + " sentences";
                if (ListView.Items.Count % 1000 == 0)
                {
                    Application.DoEvents();
                }
            });
            Timer.Enabled = false;

            ResultLabel.Text = String.Format("{0} sentences.", ListView.Items.Count);
            if (ListView.Items.Count > 0)
            {
                ListView.EnsureVisible(0);
            }
            LettersTextBox.Enabled = true;
            LettersTextBox.Focus();
            ListView.Columns[0].Text      = "Click here to sort";
            TypeToolStripMenuItem.Enabled = true;
            RunToolStripMenuItem.Enabled  = true;
            ViewToolStripMenuItem.Enabled = true;

            SaveResults();
        }
Ejemplo n.º 2
0
        private void GenerateAnagrams()
        {
            this.Cursor = Cursors.WaitCursor;
            try
            {
                LettersTextBox.Enabled = false;
                ListView.Items.Clear();
                ListView.Enabled = false;
                InitialsToolStripMenuItem.Enabled = false;
                RunToolStripMenuItem.Enabled      = false;
                SaveToolStripMenuItem.Enabled     = false;
                m_start_time          = DateTime.Now;
                ElapsedTimeLabel.Text = "00:00:00";
                Timer.Enabled         = true;
                ProgressBar.Minimum   = 0;
                ProgressBar.Value     = 0;

                string filename = "Data" + "/" + "dictionary.txt";
                if (File.Exists(filename))
                {
                    sentences = Anagrams.GenerateAnagrams(filename, LettersTextBox.Text);
                    if (sentences != null)
                    {
                        ProgressBar.Minimum = 0;
                        ProgressBar.Maximum = sentences.Count;
                        for (int i = 0; i < sentences.Count; i++)
                        {
                            ListView.Items.Add(sentences[i]);
                            ListView.EnsureVisible(ListView.Items.Count - 1);
                            ResultLabel.Text = ListView.Items.Count.ToString() + " / " + sentences.Count;
                            if (ListView.Items.Count % 1000 == 0)
                            {
                                Application.DoEvents();
                            }
                            ProgressBar.Value = i + 1;
                        }
                    }

                    ResultLabel.Text = String.Format("{0} sentences.", sentences.Count);
                    if (ListView.Items.Count > 0)
                    {
                        ListView.EnsureVisible(0);
                    }
                    LettersTextBox.Enabled = true;
                    LettersTextBox.Focus();
                    ListView.Enabled = true;
                    if (ListView.Columns.Count > 0)
                    {
                        ListView.Columns[0].Text = "Click to sort";
                    }
                    InitialsToolStripMenuItem.Enabled = true;
                    RunToolStripMenuItem.Enabled      = true;
                    SaveToolStripMenuItem.Enabled     = true;

                    SaveResults();

                    Timer.Enabled = false;
                }
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }