Алан Гибизов, да может. Но если делать анаграммы из нескольких слов - то нужно будет проверять каждый раз подходит ли новое слово для конструирования выражения. И если спектр будет "a:0", .... тоесть нету свободных слотов для буквы "a" и так далее... то можно скипнуть не просто слово автогонка но и все-все слова из группы "ав*"
По росту памяти - я-бы не делал ничего. Это нормальный режим работы для всех runtime, имеющих Garbage Collector. Проблема может быть только тогда, когда GC не смог убрать память.
По поводу как оптимизировать вызов - скорее всего ничего здесь не подскажут без исходного кода.
Алан Гибизов, ну почему-же. Я вот щас думаю подсчитывать "спектр словосочетания" тоесть буквы и их количество. И на основе этой информации отслеживать добавление новых слов в словосочетание и таким образом делать движение вниз по дереву DFS или выход наверх если спектра не хватает.
По поводу справочника слов. Я вот посмотрел на него с прищуром. И вижу что можно игнорировать целые группы слов - если они изначально для спектра не подходят.
Такую архитектуру дизайнили лет 10 назад. В настоящее время (Reactive/Async/EventDriven) стараются делать просто 1 большой процесс который диспетчеризирует канал I/O и раздает вызовы бизнес-функциям. Или акторам как будет угодно. Вобщем если сведенья со всех датчиков вы получаете через один сетевой интерфейс и все 100 датчиков работают на одном сетевом протоколе - то вам имеет смысл подумать о таком дизайне.
2000 процессов выглядят трешово. Тем более что вы должны понимать что квантов времени им никто не даст одновременно. Всё равно внутри ядра они будут стоять в очередях.
Единственное пожалуй преимущество вашей архитектуры в том что можно стартовать и килять отдельно каждый процесс. Но является ли это таким уж полезным?
Алан Гибизов, я как раз говорил об улучшении ленивого генератора. Просто следущая итерация - поиск слов в словаре во много раз более затратная чем генерация. Тоесть нам в любом случае дешевле проверить несколько гласных букв и отбросить заранее запрещенные комбинации и подать на вход следующему узлу конвейера отфильтрованное слово. Поиск в глубину и если успешно - передаем кандидат-слово дальше.
Ах да. 4 согласных буквы. "Мкртчян" :) Непрокатило. Будем искать 6 букв.
Если изучать вопрос академически. То скорее всего можно. Я так думаю. Мы просто обсуждаем принципиальную возможность. И мне это обсуждать интересно. Как инженеру.
Но если обсуждать в духе - можно ли нагнуть государство (ведь оно такое лоховское) то я-бы не стал этого делать здесь по крайней мере. Это просто некрасиво по отношению к тому государству будь оно трижды неправо и некрасиво.