注意-请先阅读信息,因为其中包含了解问题的重要信息。
规则→
•有 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个矩阵块,在满足上述条件100%的情况下,随机最多只能填充108个可用块中的最多60个数字。
•列中的数字必须按照升序进行排列/排序 (出于编码逻辑的目的,将数字分配给新的 MATRIX MAP 后,立即使用 array_shift()或 unset()这个数字,为了避免重复
示例- 行1 和列1 将生成 MATRIX BLOCK-R1C1
第3行和第7列应生成 MATRIX BLOCK-R3C7
为方便起见,矩阵块也可以称为矩阵单元格(如果需要)
带有数字的主数组
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
);
上面的数组从 108个矩阵块/单元格中填写了 60个数字,这符合包含 FULL BLOCK 的条件 4个带有3个行的MINI块(最多允许)
我已经能够生成此文件,而没有任何问题满足列
的所有条件我的分配矩阵阵列看起来像
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 可以在生成的矩阵块/单元格中填充一个数字( Row [Number] Column [Number] ),否则如果 FALSE 矩阵块/单元格为空
问题:
我无法理解用于创建如上所述的矩阵分配图的逻辑和循环应该是什么
我曾尝试 foreach和for ,但无法确定满足条件的完美组合。
(还对上述所有嵌套循环进行了尝试)