Цитата:
Сообщение от caseyryan
Но конкретно об этом цикле, я сомневаюсь, что из-за него игра зависает на пару секунд. Это просто невозможно. 100 простых итераций он отработает мгновенно. Явно дело в чем-то другом.
|
Я стараюсь по возможности избегать while, просто решил проверить. Действительно, попереставлял этот кусок кода в разные места, иногда тормозит, иногда нет.
Тем не менее, остаётся вопрос: какой алгоритм использовать для расстановки случайных чисел (допустим, от 0 до 9) в одномерном массиве длиной в 8 ячеек, со следующими ограничениями:
- не больше 6 чисел, отличных от 0;
- не больше 4 одинаковых чисел;
- не больше 2 одинаковых числе подряд.
Мне на ум приходит 2 варианта:
1. Присваивать по-очереди каждой ячейке случайное число и проверять, подходит ли оно, уменьшая на 1 в случае неудачи, вплоть до 0;
2. Присвоить случайные числа сразу всем ячейкам, затем проверять условия сразу по всем и, если где-то косяк, присвоить новую комбинацию - и так до тех пор, пока комбинация не окажется удачной.
Какой подход лучше: 1, 2 или есть другие?