Введение
Я написал код, чтобы дать мне набор чисел в формате «36 на q» (1‹= q ‹= 36) при следующих условиях:
- В каждой строке должны использоваться числа от 1 до 36.
- Ни одно число не должно повторяться в столбце.
Метод
Первая строка генерируется случайным образом. Каждое число в следующей строке проверяется на указанные выше условия. Если число не удовлетворяет одному из заданных условий, оно не выбирается снова для этого конкретного места в этой конкретной строке. Если он выходит за допустимые значения, он начинается снова.
Проблема
В отличие от низких значений q (скажем, 15, вычисление которых занимает меньше секунды), основной целью является q=36. Прошло более 24 часов с тех пор, как он начал работать для q = 36 на моем ПК.
Вопросы
Могу ли я предсказать время, необходимое для этого, используя данные, которые у меня есть из более низких значений q? Как?
Есть ли лучший алгоритм для выполнения этого за меньшее время?
Как рассчитать среднее количество необходимых циклов? (используя комбинаторику или иным образом).