Как я нашел новую панграмму (разнобуквицу)
Ну само собой получилось, что мне захотелось составить что‑то из всех букв. Оказалось, что классика вроде «Съешь ещё этих мягких французских булок» не подходит — в моём наборе каждая буква была только один раз. А те панграммы, где буквы не повторяются (можно найти, например, у Лебедева в «Ководстве») — «Эй, жлоб! Где туз? Прячь юных съёмщиц в шкаф.» или «— Любя, съешь щипцы, — вздохнёт мэр, — кайф жгуч» — они, скажем так, на любителя. Слишком много восклицаний, междометий и прямой речи. Хотелось чего-то более пристойное и связное.
И я тут вспомнил видео Мэтта Паркера про оптимизацию его кода. Действительно, можно попробовать найти панграмму с помощью bitwise логики — тогда перебор комбинаций будет быстрым. Допустим, у нас есть слово «кайф». Буква «к» — это 11-й бит, «а» — 0-й, «й» — 10-й, «ф» — 21-й. В числе биты этих разрядов будут выставлены в единицу. Слово «жгуч» — своё число, и так для каждого слова из словаря. При этом анаграммы будут друг другу соответствовать: «адрес» и «среда» будут с одним числом, что приемлемо, для поставленной цели эти слова взаимозаменяемы.
https://habr.com/ru/articles/1049056/
Алгоритмы и Структуры данных
Post #4728
560