вы уменьшаете количество перестановок, но не на 75%, так как все возможные позиции маленького квадрата заполняют квадрат 6x6, а ваша "четверть" заполняет квадрат 4x4.
Поскольку«перекрываются» с вашими кварталами, вы на самом деле добавляете немного перестановок.Поскольку ваш квартал равен 4х4, у вас есть 4 квадрата, перекрывающихся в среднем столбце, и еще четыре в среднем ряду.
Тем не менее, это меньше, чем на самом деле вычисление для каждого маленького квадрата.
также, вы можете еще больше увеличить производительность с 2 квадратами, выполнив это:
скажем, у вас есть 2 квадрата, 1 и 2. если ваш квадрат:
11110000
11110000
00000000
02000000
Это будет эквивалентно:
00001111
00001111
00000000
00000020
и
00000020
00000000
00001111
00001111
Таким образом, вы можете перебрать все перестановки 1 в первой четверти сетки против всех перестановок 2 в ПЕРВОЙ ПОЛОВИНЕ (слева)сетка.сделайте это для кварталов 1 и 2 (где четверть 1 находится в верхнем левом углу, а четверть 2 - в верхнем правом).