ПРИМЕЧАНИЕ - Пожалуйста, сначала прочтите информацию, поскольку она содержит важную информацию для понимания проблемы.
Правила →
• Есть 9 столбцов (C1, C2, C3, C4, C5, C6, C7, C8, C9) [ Макс. Столбцы будут 9 ]
• Количество рядов может варьироваться от 3,6,9,12,15,18 (макс.) В этом случае количество рядов должно быть 12
количество рядов = количество билетов (максимально допустимое 6) x рядов за билет (максимально допустимое 3) . Таким образом, Макс. Рядов может быть 18
• Для каждого Строка требуется заполнить 4 пробела и 5. с числами
• Необходимо использовать все числа, доступные в массиве столбцов
• Эта конфигурация должна создать матрицу из 9 столбцов & 12 строк ( 3 x 4 билета ), что составляет 108 МАТРИЧНЫХ БЛОКОВ , где можно заполнить только максимум 60 номеров из 108 доступных блоков случайным образом с соблюдением вышеуказанных условий 100%.
• Числа в столбце должны быть упорядочены / отсортированы в ПОСЛЕДУЮЩИЙ ЗАКАЗ (Для кодирования логи c цель , как только номер будет присвоен новому MATRIX MAP , используйте array_shift () или unset () номер, чтобы избежать повторения
Пример - Строка 1 и Столбец 1 должен сгенерировать MATRIX BLOCK - R1C1
Строка 3 * 1 068 * и Столбец 7 должен генерировать МАТРИЧНЫЙ БЛОК - R3C7
Матричный блок также может называться Matrix Cell для вашего удобства (при необходимости)
ОСНОВНОЙ НАБОР Массива с номерами
array(
"C1"=> array( 1, 2, 3, 5, 6, 7, 9 ), //7 Numbers
"C2"=> array( 13, 14, 15, 17, 18, 19 ), //6 Numbers
"C3"=> array( 21, 22, 23, 24, 25, 26, 30 ), //7 Numbers
"C4"=> array( 31, 33, 34, 36, 37, 38, 39 ), //7 Numbers
"C5"=> array( 41, 42, 46, 47, 48, 49, 50 ), //7 Numbers
"C6"=> array( 51, 52, 53, 54, 55, 57, 58 ), //7 Numbers
"C7"=> array( 61, 62, 64, 65, 69, 70 ), //6 Numbers
"C8"=> array( 71, 74, 75, 76, 77, 78 ), //6 Numbers
"C9"=> array( 82, 83, 85, 87, 88, 89, 90 ) //7 Numbers
);
Приведенный выше массив содержит 60 чисел для заполнения из 108 MATRIX BLOCK / CELL , что соответствует условию, что для FULL BLOCK , содержащего 4 МИНИ-БЛОКА С 3 СТРОКАМИ (макс. разрешено) КАЖДЫЙ
Мне удалось создать это без каких-либо проблем, отвечающих всем условиям Столбцы
Мой Матрица размещения Массив будет выглядеть как
array(
"R1"=> array(
"C1"=> true, // Means that MATRIX BLOCK R1C1 will be NOT EMPTY
"C2"=> false, // Means that MATRIX BLOCK R1C2 will be EMPTY
"C3"=> true,
"C4"=> false,
"C5"=> true,
"C6"=> false,
"C7"=> true,
"C8"=> true,
"C9"=> false
),
"R2"=> array(
"C1"=> false,
"C2"=> true,
"C3"=> false,
"C4"=> true,
"C5"=> false,
"C6"=> true,
"C7"=> true,
"C8"=> true,
"C9"=> false
),
"R3"=> array(
"C1"=> true,
"C2"=> true,
"C3"=> true,
"C4"=> true,
"C5"=> false,
"C6"=> false,
"C7"=> false,
"C8"=> false,
"C9"=> true
),
"R4"=> array(
"C1"=> true,
"C2"=> true,
"C3"=> true,
"C4"=> false,
"C5"=> true,
"C6"=> true,
"C7"=> false,
"C8"=> false,
"C9"=> false
),
"R5"=> array(
"C1"=> false,
"C2"=> false,
"C3"=> false,
"C4"=> false,
"C5"=> true,
"C6"=> true,
"C7"=> true,
"C8"=> true,
"C9"=> true
),
"R6"=> array(
"C1"=> true,
"C2"=> true,
"C3"=> false,
"C4"=> true,
"C5"=> false,
"C6"=> true,
"C7"=> false,
"C8"=> false,
"C9"=> true
),
"R7"=> array(
"C1"=> false,
"C2"=> false,
"C3"=> true,
"C4"=> false,
"C5"=> true,
"C6"=> false,
"C7"=> true,
"C8"=> true,
"C9"=> true
),
"R8"=> array(
"C1"=> true,
"C2"=> false,
"C3"=> false,
"C4"=> true,
"C5"=> false,
"C6"=> false,
"C7"=> true,
"C8"=> true,
"C9"=> true
),
"R9"=> array(
"C1"=> true,
"C2"=> false,
"C3"=> true,
"C4"=> false,
"C5"=> true,
"C6"=> true,
"C7"=> false,
"C8"=> false,
"C9"=> true
),
"R10"=> array(
"C1"=> false,
"C2"=> true,
"C3"=> true,
"C4"=> true,
"C5"=> true,
"C6"=> false,
"C7"=> true,
"C8"=> false,
"C9"=> false
),
"R11"=> array(
"C1"=> false,
"C2"=> true,
"C3"=> false,
"C4"=> true,
"C5"=> true,
"C6"=> true,
"C7"=> false,
"C8"=> true,
"C9"=> false
),
"R12"=> array(
"C1"=> true,
"C2"=> false,
"C3"=> true,
"C4"=> true,
"C5"=> false,
"C6"=> true,
"C7"=> false,
"C8"=> false,
"C9"=> true
)
);
В приведенном выше массиве R означает строку , C для столбца , TRUE / FALSE (логическое значение) означает, что если TRUE , то число может быть заполнено в результирующем MATRIX BLOCK / CELL ( Row [Number] столбец [Number] ), иначе, если FALSE MATRIX BLOCK / CELL должен быть EMPTY
Результат для вышеупомянутого должен быть ![This is the Manual Allocation done on a Spreadsheet](https://i.stack.imgur.com/ZrZ8v.png)
ПРОБЛЕМА :
Я не могу понять, что должно быть логами c & l oop, используемыми здесь для создания MATRIX ALLOCATION MAP , как показано выше
Я пробовал while, foreach & for , но не смог определить идеальную комбинацию, которая отвечала бы условиям.
(Пробовал все также с помощью Nested Loops)