gpt4 book ai didi

php - 检查一个数组是否可以放入另一个数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:31:27 24 4
gpt4 key购买 nike

我正在编写一个 PHP 脚本来创建一个 arduino“俄罗斯方 block 时钟”。我想生成一个方 block 序列来显示一个数字。

我的数字数组(以“0”为例):(格式化显示)

1 1 1 1 1 1
1 1 1 1 1 1
1 1 0 0 1 1
1 1 0 0 1 1
1 1 0 0 1 1
1 1 0 0 1 1
1 1 1 1 1 1
1 1 1 1 1 1

地点:

1 = must be filled
0 = empty
2 = informed (after check if block can be put)

现在我有了俄罗斯方 block 数组,就像那样:

0 0 0 0
0 0 0 0
0 0 0 0
1 1 1 1

1 0 0 0
1 0 0 0
1 0 0 0
1 0 0 0

而且我想检查是否可以将我的俄罗斯方 block block 放在数字数组中

例如。 :放置第一个 block 后,我会得到以下数组:(这是一个“T” block )

1 1 1 1 1 1
1 1 1 1 1 1
1 1 0 0 1 1
1 1 0 0 1 1
1 1 0 0 1 1
1 1 0 0 1 1
1 2 1 1 1 1
2 2 2 1 1 1

起初我尝试按行和列切割表格以查看它是否与我的 block 相对应并且我做了很多更改但没有成功。

你可以看到我的两个测试脚本:http://pastebin.com/znnmvT4ghttp://pastebin.com/D9h51Xw3

我将保留历史添加以在错误或无法解析数字的情况下使用回溯。

因此,我会首先检查我的 blocka 数组是否可以添加到我的数字数组中。

谢谢你的想法!

最佳答案

将您的俄罗斯方 block block 放在一个与数字数组大小完全相同的数组中,并仅用零包围它以定义它在棋盘上的位置。 (注意我用的是 2 而不是 1,稍后会解释)

0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
2 2 2 2 0 0

然后将所有现有数组值添加到另一个数组中的相应值。

1 1 1 1 1 1
1 1 1 1 1 1
1 1 0 0 1 1
1 1 0 0 1 1
1 1 0 0 1 1
1 1 0 0 1 1
1 3 1 1 1 1
5 5 5 3 1 1

检查生成的数组是否包含 5。如果包含,则俄罗斯方 block 不能放置在该位置,因为那里已经有一个 block 。

还要检查是否没有 2。如果是这样,则不应填充的空间将被填充。 (这就是您应该使用 2 而不是 1 的原因)。

1 1 1 1 1 1
1 1 1 1 1 1
1 1 0 0 1 1
1 1 0 0 1 1
1 1 0 0 1 1
3 3 2 2 1 1
1 3 1 1 1 1
3 3 3 1 1 1

如果这些都不是真的,您有一个可能的解决方案。

1 1 1 1 1 1
3 3 3 3 1 1
1 1 0 0 1 1
1 1 0 0 1 1
1 1 0 0 1 1
1 1 0 0 1 1
1 3 1 1 1 1
3 3 3 1 1 1

这可能不是唯一的解决方案,因此您必须对俄罗斯方 block block 在数字数组中的所有可能位置执行此操作。要获得最佳位置并创建可能的解决方案,您可能需要使用像 A* 这样的算法。

关于php - 检查一个数组是否可以放入另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14981088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com