You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对正方形网格进行对角线分组以实现风电场布局验证

风电场网格对角线验证实现问题

我有一个代表正方形网格的布尔值字符串:

0100001110000100

(对应4×4网格可视化:部分位置标记为1,其余为0)

我需要编写一个验证程序,按对角线分组检查该网格,确保每个对角线组中'1'的数量不超过1个。(示例中的第5组存在两个1,对应可视化:该对角线组的两个位置均为1)

为此,我需要将网格整理为多个集合,再检查每个集合中'1'的数量是否超标。以下是按分组排列的字符及其在原字符串中的位置:

0       0  
01      4  1
100     8  5  2
0010    12 9  6 3
101     13 10 7
00      14 11 
0       15 

我一直在尝试找出字符串位置与所属分组之间的数学关系,但数学基础薄弱,迟迟没有进展。

参考我已实现的水平验证方法,希望用LINQ和集合操作而非繁琐循环来完成这个对角线验证,该场景来自风电场代码练习:

public bool HorizontalValidate(string windfarm)
{
    var farmSize = (int) Math.Sqrt(windfarm.Length);

    var rows = Enumerable.Range(0, farmSize)
        .Select(x => windfarm.Substring(x * farmSize, farmSize))
        .ToList();

    if (rows.Select(x => x.Count(y => y == '+')).Max() > 1)
        return false;

    return true;
}

内容的提问来源于stack exchange,提问作者Eval Knievel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:46:26