Dmitry Bay, насчет смены на фронте - разрабатываю расширение с таким функционалом. Насчет разбивки по нодам - верстка поломается если просто заменить innerHTML во всем html, приходится менять "понодно"
Alexander, тоесть я сейчас правильно понимаю, что делая проект для NET Framework я могу делать скриншоты и пользоваться прелестями Windows Forms, но при этом я не могу использовать консоль никак. А если я делаю проект для NET-6.O, то я не могу пользоваться Windows Forms, если мне требуется делать скриншот в консольном приложении? Если я все правильно понял, то это какой то бред
rPman, да ничего особенного, вначале отбор по длине, заранее готовим словарь, где ключом является длина слова, а значением список слов такой длины с одной деталью: берутся слова с длиной плюс один, плюс два, минус один и минус два (чтобы попали слова если в целевом слове пропущена одна или две буквы или одна или две буквы лишние). Например, под индексом 14 список всех слов из словаря длиной 14, а также 12, 13, 15 и 16. Дальше берем длину исковерканого слова, берем из нашего списка отсортированых по длине слов нужный элемент, и таким образом сужаем круг поиска до 1000-2000 слов из 50 000.
Дальше делим слова на n-граммы (я использовал двух-граммы), и ищем пересечения с n-граммами целевого слова. Если длина списка совпавших n-грамм больше определенного числа (я брал длину списка n-грамм целевого слова разделить на 4.3), то такое слово потенциально похоже на целевое, его добавляем в новый список похожих слов. Таким макаром еще сильнее сужаем круг поиска, и наконец пробегаем дамерау-левенштейном по списку, и слово с наименьшим значением редактирования и будет искомым словом. В моей реализации на одно слово уходит примерно 0.030 секунд (словарь 62 027 слов)
спасибо, но алгоритм уже оптимизирован дальше некуда. Вопрос был именно про оптимизацию с++, почему он так медленно например читал из файла, и какой вид массива самый шустрый
Ввод через чтение из файла (ifstream)
Эта структура данных использовалась, чтобы сортировать массив по длинне строк, тоесть ключ - длинна слов, значение - массив таких слов, таким образом я быстро сужаю область поиска.
Насчет последнего спасибо, буду читать
Wataru, не очень в плане производительности, так необходимо перебрать 100 000 слов, вот таким методом, боюсь это будет в не слишком быстрые сроки выполнятся. Это действительно единственный путь, перебор?
Василий Дёмин, обратите внимание, в первом случае произошла перемена местами двух букв, операция одна. А так операции стандартные для задач расстояния редактирования (удаление, вставка, замена, транспозиция)
Aetae, да я эту штуку перелопатил вдоль и поперек, сервер мерчанта генерирует все правильно и валидно, иначе бы на одном из промежуточных этапов сломался. И все же как то он отличает запрос от axios и браузера, возвращая разные ответы
но ведь я не использую браузер, который ждет от сервера заголовков access-control-allow-* и блокирует ответ для меня что и называется cors. Я использую node js + axios
кстати ds1.mirconnect таких заголовков и не отправляет
WapSter, не вариант, нужно сделать как я спросил. Я знаю, что в php это делается легко, ставишь заголовок content-type в mime тип файла который хочешь отдать, и через echo отдаешь ссылку на ресурс. Не знаю, как такое же сделать в node js express