static void Main()
        {
            /* задача немного изменилась:
             * имеется словарь русских слов :)
             * имеется алфавит
             * имеется длина требуемого слова
             * необходимо вывести все русскоязычные слова заданной длины, 
             * состоящие только из алфавита
             *
             * Как я думаю, сначала из всех слов алфавита (количеством G)
             * можем выделить некоторое подмножество слов заданной длины n
             * Перебрать все слова и смотреть, есть ли похожие символы в алфавите  
             */

            var alpha = new ArrayList(new[] {'м', 'б', 'я', 'к', 'щ', 'о', 'д', 'г', 
                                             'р', 'у', 'ц', 'с', 'н', 'р', 'е', 'л'});
            var dict = new Dictionary(@"..\..\lop2v2.txt");
            var generator = new WordGenerator(dict, alpha, 5);
            generator.PrintWords();
            Console.ReadKey();
        }
Exemple #2
0
        static void Main(string[] args)
        {
            var app = new CommandLineApplication();

            app.HelpOption("-?|-h|--help");
            app.VersionOption("--version", "1.0.0");

            app.Command("generate", command =>
            {
                command.HelpOption("-?|-h|--help");
                var pathArg       = command.Argument("[path]", "Path to the file that contains words");
                var orderOptions  = command.Option("--order <ORDER>", "order of Markov model", CommandOptionType.SingleValue);
                var lengthOptions = command.Option("--length <LENGTH>", "length of the words to generate", CommandOptionType.SingleValue);
                var countOptions  = command.Option("--count <COUNT>", "number of words to generate", CommandOptionType.SingleValue);

                command.OnExecute(() =>
                {
                    string path = pathArg.Value;
                    if (string.IsNullOrEmpty(path))
                    {
                        app.ShowHelp();
                        return(1);
                    }

                    var generator = new WordGenerator();
                    if (orderOptions.HasValue())
                    {
                        int order;
                        if (int.TryParse(orderOptions.Value(), out order))
                        {
                            generator.Order = order;
                        }
                    }

                    int length;
                    int count;
                    if (!int.TryParse(lengthOptions.Value(), out length))
                    {
                        length = 7;
                    }

                    if (!int.TryParse(countOptions.Value(), out count))
                    {
                        count = 10;
                    }

                    using (var reader = new StreamReader(path))
                    {
                        string line;
                        while (!reader.EndOfStream && (line = reader.ReadLine()) != null)
                        {
                            generator.AddWord(line);
                        }
                    }

                    for (int j = 0; j < count; j++)
                    {
                        Console.WriteLine(generator.Generate(length));
                    }

                    return(0);
                });
            });

            try
            {
                app.Execute(args);
            }
            catch (CommandParsingException)
            {
                app.ShowHelp();
            }
        }