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); } } } }
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; } } }
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(); }
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)); }
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); }
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; }
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); }
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); }
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); } }
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}")); } }