Exemplo n.º 1
0
        public static void ConsumeWordBase(WordBase wordbase, int getDefinitionInvardsUpToLayer = 0, bool addAsWisdom = false)
        {
            foreach (var word in wordbase.Words)
            {
                if (Program.EscapePressed || (Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Escape))
                {
                    Program.EscapePressed = true;
                    break;
                }

                foreach (var separatedWord in word.Split(' '))
                {
                    if (string.IsNullOrEmpty(separatedWord))
                    {
                        continue;
                    }
                    var wordEntity = GetOrCreate(separatedWord, getDefinitionInvardsUpToLayer, addAsWisdom);

                    if (wordbase.Definitions == null)
                    {
                        continue;
                    }
                    foreach (var definition in wordbase.Definitions)
                    {
                        AddDefinition(wordEntity, definition, 0, LinkSeverity.Strong);
                    }
                }
            }
        }
Exemplo n.º 2
0
        public static void Main(string[] args)
        {
            var wb = new WordBase(Directory.GetFiles("dictionaries"));

            wb.Files.AddRange(Directory.GetFiles("downloads"));
            wb.Init();
            System.Console.Write("Сколько букв? ");
            var n = int.Parse(System.Console.ReadLine());
            var g = new Guesser(n, wb);

            while (true)
            {
                var guess = g.GuessAnswer();
                var l     = guess.Letter;
                var c     = g.Attempts;
                System.Console.WriteLine($"Попытка №{c} Шаблон: {g.Matcher.Pattern}");
                System.Console.WriteLine($"Где буква '{l}'?");
                var d = (from i in System.Console.ReadLine().Split() select int.Parse(i)).ToArray();
                g.Hint(l, d);
                if (g.Matcher.Unknown == 0)
                {
                    System.Console.WriteLine($"Угадано слово '{g.Matcher.Pattern}' c {c} попытки!");
                    break;
                }
            }
        }
Exemplo n.º 3
0
        private static void Main(string[] args)
        {
            AppDomain.CurrentDomain.UnhandledException     += OnUnhandledException;
            LogManager.Configuration.Variables["starttime"] = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss-ffff");

            using (var r = new StreamReader("api.txt"))
            {
                Bot = new TelegramBotClient(r.ReadLine());
            }

            Words = new WordBase(Directory.GetFiles("dictionaries"));
            Words.Files.AddRange(Directory.GetFiles("downloads"));

            Words.Init();
            //initbase = Words.InitAsync();
            //initbase.Wait();

            Bot.OnMessage       += BotOnMessageReceived;
            Bot.OnMessageEdited += BotOnMessageReceived;
            Bot.OnReceiveError  += BotOnReceiveError;
            Bot.OnCallbackQuery += BotOnCallbackQueryReceived;

            var me = Bot.GetMeAsync().Result;

            Console.Title = me.Username;

            Bot.StartReceiving();
            Send(Bot.SendTextMessageAsync(Vlad, $"Я проснулся {DateTime.Now}")).Wait();
            //initbase.Wait();
            Console.ReadLine();
            Bot.StopReceiving();
        }
Exemplo n.º 4
0
        public void TestCreateWord()
        {
            IEnumerable <string> list = new List <string>()
            {
                "gogo", "pepi", "mimi", "stanka"
            };
            WordFactory factory  = new WordFactory(list);
            WordBase    someWord = factory.CreateWord();

            Assert.AreEqual(someWord.GetType(), typeof(Word));
        }
Exemplo n.º 5
0
        public static TextElement ParserLoadWord(WordBase word, string code, string value, string name, int from, int to, int end)
        {
            string     n          = string.Empty;
            TextBuffer textBuffer = Util.NewBufferWs(code);

            word.TextBuffer = textBuffer;

            var outNo = new List <TextElement>();

            //var idn = new WordIdent("kurt") { TextBuffer = textBuffer };
            Assert.AreEqual(true, word.Load(outNo, 0), n + "Identifier: Can't read");

            textBuffer.FindNextWord(null, false);
            TextElement text = null;

            if (outNo.Count > 0 || to > 0)
            {
                text = outNo[0];
            }

            if (text != null && text is CodeElement)
            {
                var codeElem = text as CodeElement;
                Assert.IsNotNull(codeElem, n + "Identifier: Can't find node after reading");
                Assert.AreEqual(value, codeElem.Value, n + "Identifier: The value is not correct");
                Assert.AreEqual(name, codeElem.Name, n + "Identifier: The name is not correct");
                Assert.AreEqual(from, codeElem.SubString.From, n + "Identifier: The start is not correct");
                Assert.AreEqual(to, codeElem.SubString.To, n + "Identifier: The end is not correct");
            }
            if (text != null && text is CommentElement)
            {
                var comm = outNo[0] as CommentElement;
                Assert.IsNotNull(comm, n + "Identifier: Can't find node after reading");
                Assert.AreEqual(value, comm.Value, n + "Identifier: The value is not correct");
                Assert.AreEqual(name, comm.Name, n + "Identifier: The name is not correct");
                Assert.AreEqual(from, comm.SubString.From, n + "Identifier: The start is not correct");
                Assert.AreEqual(to, comm.SubString.To, n + "Identifier: The end is not correct");
            }
            Assert.AreEqual(end, textBuffer.PointerNextChar, n + "Identifier: The buffer pointer is of after reading");

            return(text);
        }
Exemplo n.º 6
0
        public MainWindow()
        {
            Program.words      = WordBase.getInstance();
            Program.adjectives = AdjectiveBase.getInstance();
            Program.LoadFromFile();
            ListOfWords = Program.words.wordList;

            minvalue   = 1;
            maxvalue   = Program.words.wordList.Count;
            startvalue = 10;

            InitializeComponent();

            wordList_lv.ItemsSource   = ListOfWords;
            NUDTextBox_LearnTest.Text = startvalue.ToString();
            NUDTextBox_OneTest.Text   = startvalue.ToString();
            NUDTextBox_ManyTest.Text  = startvalue.ToString();
            NUDTextBox_WriteTest.Text = startvalue.ToString();
            questionIndex             = 0;
        }
Exemplo n.º 7
0
        public WordBase GetRelatedWords(string word)
        {
            var doc      = new HtmlWeb().Load(string.Format(url, word));
            var allTable = doc.DocumentNode.Descendants("table").FirstOrDefault(table => table.HasClass("wordexplorer"));

            if (allTable == null)
            {
                return(null);
            }
            var allWords     = allTable.Descendants("tr").Where(item => item.HasClass("hidden") || item.HasClass("shown"));
            var allWordtexts = new List <string>();

            foreach (var htmlNode in allWords)
            {
                allWordtexts.AddRange(htmlNode.Descendants("a").Select(item => item.InnerText));
            }
            var result = new WordBase();

            result.Populate(new[] { word }, allWordtexts.Distinct().ToArray());
            return(result);
        }
Exemplo n.º 8
0
        public static void WordLoadError(string buf, WordBase word, string testName, string expected)
        {
            TextBuffer textBuffer = Util.NewBufferWs(buf);

            word.TextBuffer = textBuffer;
            Rule rule = new Rule("testRule", word);

            //rule.add
            var outNo = new List <TextElement>();

            //var idn = new WordIdent("kurt") { TextBuffer = textBuffer };
            Assert.AreEqual(false, word.Load(outNo, 0), "No read error");
            Assert.AreEqual(false, word.ResolveErrorsForward(0), "No read error");
            Assert.IsNotNull(textBuffer.Status.Error, testName + " No error object");

            string actual = textBuffer.Status.Error.Message;
            string s      = string.Join("\r\n", textBuffer.Status.AllErrors.Select(err => err.Message).ToArray());

            //ParseErrorResPos(testName, line, col, errMsg1, resourceExpression, parm);
            //string expected =
            Assert.AreEqual(expected, actual, testName);
        }
Exemplo n.º 9
0
        static void Main(string[] args)
        {
            PatternDatabase.Initialize();
            World.Initialize(new Wordsmyth());

            var a   = new Wordsmyth();
            var txt = string.Empty;

            txt += a.GetWordDefinition("tree") + ". ";
            txt += a.GetWordDefinition("plant") + ". ";
            txt += a.GetWordDefinition("jungle") + ". ";
            txt += a.GetWordDefinition("wood") + ".";

            //World.AddMeaning( tree, "tall plant" );
            //var tall = World.GetOrCreate( "tall" );
            //var plant = World.GetOrCreate( "plant" );
            //var human = World.GetOrCreate( "human" );
            //var humanLinks = World.FindLinks( human );
            //var treeLinks = World.FindLinks( tree );

            //tree.SaveToDatabase();
            //tall.SaveToDatabase();
            //plant.SaveToDatabase();
            //human.SaveToDatabase();

            //World.ConsumeDatabase();

            Logger.Level2Log($"Starting Words basic");
            var wbBasic = new WordBase();

            wbBasic.Populate(WordsDump.WordsBasic);
            World.ConsumeWordBase(wbBasic, 1, true);

            Logger.Level2Log($"Starting Words objects");
            var wbObjects = new WordBase();

            wbObjects.Populate(WordsDump.WordsObjects);
            World.ConsumeWordBase(wbObjects, 1, true);

            //var files = Directory.GetFiles( "../../../../Wordbase/" );
            //var filesCount = files.Length;
            //for ( var i = 0; i < files.Length; i++ ) {
            //  if ( EscapePressed ) break;
            //  Logger.Level2Log( $"Starting file number {i}/{filesCount}: {files[i]}" );
            //  var wb = new WordBase();
            //  wb.Populate( files[i] );
            //  World.ConsumeWordBase( wb, 1 );
            //}

            if (!EscapePressed)
            {
                World.GetLinkDumpList();
            }

            //Logger.Alarm();

            while (true)
            {
                Console.Write("What? ");
                var input = Console.ReadLine();
                CommandProcessor.ProcessInput(input);
            }
        }
Exemplo n.º 10
0
        private static async void BotOnMessageReceived(object sender, MessageEventArgs messageEventArgs)
        {
            try
            {
                var message = messageEventArgs.Message;
                var id      = message.From.Id;
                var text    = message.Text;
                var chatid  = message.Chat.Id;

                Log.Trace($" In: {id} {message.From.FirstName} {message.From.LastName}\r\n{text}");

                if (!UserBase.ContainsKey(id))
                {
                    UserBase[id] = new UserInfo(id);
                }

                if (message.Type != MessageType.TextMessage)
                {
                    return;
                }

                if (text == "/wordscount" && UserBase[id].Guesser == null)
                {
                    await Send(Bot.SendTextMessageAsync(chatid, $"Количество слов: {Words.Count}"));
                }
                else if (text.Contains("/download"))
                {
                    var url = text.Substring(text.IndexOf(' ') + 1);
                    Uri uri;
                    try
                    {
                        uri = new Uri(url);
                    }
                    catch
                    {
                        uri = new Uri("http://" + url);
                    }
                    var reply = "";
                    using (var client = new WebClient())
                    {
                        switch (text[text.IndexOf(' ') - 1])
                        {
                        case '0':
                            client.Encoding = Encoding.Default;
                            break;

                        case '1':
                            client.Encoding = Encoding.ASCII;
                            break;

                        case '2':
                            client.Encoding = Encoding.BigEndianUnicode;
                            break;

                        case '3':
                            client.Encoding = Encoding.Default;
                            break;

                        case '4':
                            client.Encoding = Encoding.Unicode;
                            break;

                        case '5':
                            client.Encoding = Encoding.UTF32;
                            break;

                        case '6':
                            client.Encoding = Encoding.UTF7;
                            break;

                        case '7':
                            client.Encoding = Encoding.UTF8;
                            break;

                        default:
                            client.Encoding = Encoding.UTF8;
                            break;
                        }
                        ;
                        Log.Debug($"Начато скачивание и анализ {uri}");
                        reply = client.DownloadString(uri);
                        Log.Debug($"Скачано {reply.Length} символов из {uri}");
                    }

                    var regex1 = new Regex("[А-Яа-яЁё]{1,30}");
                    var regex2 = new Regex("[А-Яа-яЁё-]{1,30}");
                    var list   = new List <string>();

                    foreach (Match i in regex1.Matches(reply))
                    {
                        if (Words.Add(i.Value))
                        {
                            list.Add(WordBase.ToLower(i.Value));
                        }
                    }
                    foreach (Match i in regex2.Matches(reply))
                    {
                        if (i.Value[0] == '-' || i.Value[i.Length - 1] == '-')
                        {
                            continue;
                        }
                        if (Words.Add(i.Value))
                        {
                            list.Add(WordBase.ToLower(i.Value));
                        }
                    }
                    Log.Debug($"Найдено {list.Count} слов в {uri}");

                    if (list.Count == 0)
                    {
                        await Send(Bot.SendTextMessageAsync(chatid, $"Добавлено {list.Count} слов"));
                    }
                    else
                    {
                        list.Sort();
                        var str = list.Aggregate("", (current, i) => current + (i + "\r\n"));

                        new Task(async() =>
                        {
                            var o = $"downloads\\{id} {DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss")}.txt";
                            using (var w = new StreamWriter(o))
                            {
                                await w.WriteAsync(str);
                            }
                            Log.Debug($"Записаны в {o} слова из {uri}");
                        }).Start();

                        if (list.Count < 500)
                        {
                            await Send(Bot.SendTextMessageAsync(chatid, $"Добавлено {list.Count} слов:\n{str}"));
                        }
                        else
                        {
                            await Send(Bot.SendTextMessageAsync(chatid, $"Добавлено {list.Count} слов"));
                        }
                    }
                }
                else if (text == "/info" && UserBase[id].Guesser != null)
                {
                    await Send(Bot.SendTextMessageAsync(chatid, $"{UserBase[id].Guesser}"));
                }
                else if (text == "/wordscount" && UserBase[id].Guesser != null)
                {
                    await Send(Bot.SendTextMessageAsync(chatid, $"Количество возможных слов: {UserBase[id].Guesser.Answer.PossibleWords.Count}"));
                }
                else if (text == "/words" && UserBase[id].Guesser != null)
                {
                    if (UserBase[id].Guesser.Answer.PossibleWords.Count < 300)
                    {
                        var s = UserBase[id].Guesser.Answer.PossibleWords.Aggregate("", (current, i) => current + (i + '\n'));
                        await Send(Bot.SendTextMessageAsync(chatid, $"Возможные слова:\n{s}"));
                    }
                    else
                    {
                        await Send(Bot.SendTextMessageAsync(chatid, $"{UserBase[id].Guesser.Answer.PossibleWords.Count} Слишком много слов для вывода"));
                    }
                }
                else if (UserBase[id].QuantityRequest)
                {
                    try
                    {
                        UserBase[id].Guesser = new Guesser(int.Parse(text), Words);

                        UserBase[id].QuantityRequest  = false;
                        UserBase[id].InterviewRequest = true;

                        var g = UserBase[id].Guesser;
                        await Task.Delay(3000);

                        var guess = g.GuessAnswer();
                        var l     = guess.Letter;

                        await Send(Bot.SendTextMessageAsync(chatid, $"Попытка №1\nГде буква '{l}'?"));

                        UserBase[id].Previous = l;
                    }
                    catch (Exception e)
                    {
                        Log.Warn($"{id} {message.From.FirstName} {message.From.LastName} Спровоцировал:\r\n{e.GetType()} {e.Message}");
                        await Send(Bot.SendTextMessageAsync(chatid, $"Что-то пошло не так: {e.GetType()} {e.Message}"));

                        UserBase.Remove(id);
                    }
                }
                else if (UserBase[id].InterviewRequest)
                {
                    try
                    {
                        var g = UserBase[id].Guesser;
                        var p = UserBase[id].Guesser.Answer.Letter;

                        var d = (from i in text.Split() select int.Parse(i)).ToArray();
                        g.Hint(p, d);

                        if (g.Matcher.Unknown == 0)
                        {
                            Log.Info(
                                $"{id} {message.From.FirstName} {message.From.LastName} Угадал слово '{g.Matcher.Pattern}' c {g.Attempts} попытки!");
                            await Send(Bot.SendTextMessageAsync(chatid, $"Угадано слово '{g.Matcher.Pattern}' c {g.Attempts} попытки!"));

                            UserBase[id].InterviewRequest = false;
                        }
                        else
                        {
                            var guess = g.GuessAnswer();
                            var l     = guess.Letter;

                            await Send(Bot.SendTextMessageAsync(chatid, $"Попытка №{g.Attempts + 1}\nГде буква '{l}'?"));

                            UserBase[id].Previous = l;
                        }
                    }
                    catch (Exception e)
                    {
                        Log.Warn($"{id} {message.From.FirstName} {message.From.LastName} Спровоцировал:\r\n{e.GetType()} {e.Message}");
                        await Send(Bot.SendTextMessageAsync(chatid, $"Что-то пошло не так: {e.GetType()} {e.Message}"));

                        UserBase.Remove(id);
                    }
                }
                else if (text.ToLower() == "где")
                {
                    await Bot.SendLocationAsync(chatid, 56.055237f, 92.968446f);
                }
                else if (text.ToLower() == "убейся")
                {
                    new Task(async() =>
                    {
                        Log.Fatal($"{id} Сказал убиться((");
                        await Task.Delay(1000);
                        Environment.Exit(id);
                    }).Start();
                }
                else if (text.ToLower() == "/rules")
                {
                    await Send(Bot.SendTextMessageAsync(chatid,
                                                        "Наберите /startgame для начала. Ответ боту — 0, если буквы нет, и номера букв через пробел, если есть"));
                }
                else if (text.ToLower() == "/startgame")
                {
                    //initbase.Wait();
                    if (!UserBase.ContainsKey(id))
                    {
                        UserBase[id] = new UserInfo(id);
                    }
                    UserBase[id].QuantityRequest = true;
                    await Send(Bot.SendTextMessageAsync(chatid, "Сколько букв в слове?"));
                }
                else if (text.ToLower() == "/test")
                {
                    var keyboard = new InlineKeyboardMarkup(new[]
                    {
                        new[]
                        {
                            new InlineKeyboardButton("1"),
                            new InlineKeyboardButton("2"),
                            new InlineKeyboardButton("3"),
                            new InlineKeyboardButton("4"),
                            new InlineKeyboardButton("5"),
                            new InlineKeyboardButton("6"),
                            new InlineKeyboardButton("7"),
                            new InlineKeyboardButton("8"),
                            new InlineKeyboardButton("9"),
                        },
                        new[]
                        {
                            new InlineKeyboardButton("Next")
                        }
                    });
                    await Bot.SendTextMessageAsync(chatid, "Choose", replyMarkup : keyboard);
                }
                else
                {
                    await Send(Bot.SendTextMessageAsync(chatid, message.Text));
                }
            }
            catch (Exception e)
            {
                Log.Error(e.ToString());
                await Send(Bot.SendTextMessageAsync(messageEventArgs.Message.From.Id, $"Что-то пошло не так: {e.GetType()} {e.Message}"));
            }
        }