Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Нормальный алгоритм набора слов для игры #154

Open
lounres opened this issue May 28, 2020 · 6 comments
Open
Labels
back Everything that is connected only with back part question Further information is requested

Comments

@lounres
Copy link
Member

lounres commented May 28, 2020

Пока что всё реализуется через пень колоду while(true) с шансом налетать на уже выбранные слова. Поэтому нужно сделать алгоритм пооптимальнее.

Пока что понятные условия:

  1. Словарь слов копировать нельзя (долго и много места занимает).
  2. Выбирать нужно так, чтобы гарантировано не попадать на использованные слова.

В принципе задача сводится к одной из двух следующих:

  1. Найти алгоритмическую биекцию между числами от до и набором упорядоченных поднаборов из чисел от до длины .
  2. * Найти быстрый алгоритм для пункта (1). Например, .
@lounres lounres added question Further information is requested back Everything that is connected only with back part labels May 28, 2020
@cookiedoth
Copy link
Member

Почему нельзя просто рандомно выбирать очередное слово, пока оно не будет новым (с помощью сета)?
Должно работать за O(k log)
Ещё, кажется, есть простой и красивый алгоритм за O(k), но я его не помню

@lounres
Copy link
Member Author

lounres commented May 29, 2020

@cookiedoth, кажется, что генерить сет слов будет долго, и занимать он будет много места. Например, чтобы набрать ~100 слов это не оптимальное решение. А когда слов будет ~60 000 (а у нас ограничение слов на партию - 1 000), то это вроде будет плохим способом.

@cookiedoth
Copy link
Member

Нет, сет будет иметь размер 100

@lounres
Copy link
Member Author

lounres commented May 29, 2020

А как тогда выбрать случайный элемент из списка всех слов, не лежащий в списке выбранных слов?

@cookiedoth
Copy link
Member

Можно сделать несколько попыток

@lounres
Copy link
Member Author

lounres commented May 29, 2020

Ну это и делается. Но на маленьких словарях что ли не особо работает…

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
back Everything that is connected only with back part question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants