使用现有的数字数组创建数组映射,同时满足PHP中的条件/规则

时间:2020-04-28 13:21:46

标签: php for-loop multidimensional-array foreach while-loop

注意-请先阅读信息,因为其中包含了解问题的重要信息。

规则→

•有 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 矩阵块/单元格为

以上结果应为 This is the Manual Allocation done on a Spreadsheet

问题

我无法理解用于创建如上所述的矩阵分配图的逻辑和循环应该是什么

我曾尝试 foreach和for ,但无法确定满足条件的完美组合。

(还对上述所有嵌套循环进行了尝试)

0 个答案:

没有答案