TLDR: 如何在php中找到多维数组排列以及如何针对更大的数组进行优化?
这是这个问题的延续: 如何在php中找到多维数组排列
我们有排序数组的脚本,想法是找到数组的唯一排列,找到这个排列的规则是:
- 输入数组包含一组数组.
- 每个内部数组都包含唯一元素.
- 每个内部阵列可以具有不同的长度和不同的值.
- 输出数组必须包含完全相同的值.
- 输出内部数组必须在同一个键上具有唯一值.
- 如果没有解决方案,
ie.: null
则允许使用通配符 .- 通配符可以在同一个键上复制.
- 解决方案应该具有尽可能少的通配符.
- 算法应该能够在不到180秒的时间内处理高达30x30的阵列.
到目前为止我有这个解决方案:
function matrix_is_solved(array $matrix) {
foreach (array_keys(current($matrix)) as $offset) {
$column = array_filter($raw = array_column($matrix, $offset));
if (count($column) != count(array_unique($column))) return false;
}
return true;
}
function matrix_generate_vectors(array $matrix) {
$vectors = [];
$columns = count(current($matrix));
$gen = function ($depth=0, $combo='') use (&$gen, &$vectors, $columns) {
if ($depth < $columns)
for ($i = 0; $i < $columns; $i++)
$gen($depth …
Run Code Online (Sandbox Code Playgroud) 你好我有数组名称和类的未知数量的输入
<input type="hidden" name="hidden[1]" class="sum" value="31">
<input type="hidden" name="hidden[2]" class="sum" value="21">
<input type="hidden" name="hidden[3]" class="sum" value="321">
<input type="hidden" name="hidden[4]" class="sum" value="-31">
<input type="hidden" name="hidden[5]" class="sum" value="31.12">
<input type="hidden" name="hidden[6]" class="sum" value="0">
Run Code Online (Sandbox Code Playgroud)
问题是如何将我尝试的那些字段的所有值加起来使用.each()和getElementByClassName,但这不会起作用