小编Eva*_*val的帖子

如何对角分组正方形网格

我有一串代表方形网格的布尔值。

0100001110000100
Run Code Online (Sandbox Code Playgroud)

表示为网格的布尔字符串

我正在尝试编写验证例程,该例程对角线检查网格,以确保其中不存在具有多个“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 
Run Code Online (Sandbox Code Playgroud)

我一直在试图找出字符串位置和它属于哪个组之间的数学关系。我尝试过各种公式,但我数学不太好,所以我被难住了。

作为参考,下面的方法是我用来水平验证字符串的方法。我想要提出的解决方案需要像这样,使用 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;
    }
Run Code Online (Sandbox Code Playgroud)

如果有人感兴趣,这里有一个链接: Windfarm Kata

c# linq algorithm diagonal

6
推荐指数
1
解决办法
267
查看次数

使用SQL查询生成时间表的所有可能组合

我有一个尴尬的SQL拼图,它击败了我.

我正在尝试生成学生单元的可能配置列表,以便我可以将他们的课程选择纳入时间表.学生可能的资格和学习列表如下:

Biology A
Biology C 
Biology D 
Biology E 

Chemistry B 
Chemistry C 
Chemistry D 
Chemistry E 
Chemistry F 

Computing D
Computing F 

Tutorial A 
Tutorial B 
Tutorial E 
Run Code Online (Sandbox Code Playgroud)

可以为学生提供可能的积木解决方案

Biology D
Chemistry C 
Computing F 
Tutorial E 
Run Code Online (Sandbox Code Playgroud)

如何查询上述数据集,为学生生成课程和块的所有可能组合?然后,我可以削减列表,删除那些冲突并选择一个有效的列表.我估计在这种情况下总共会有大约120种组合.

我可以想象它会是某种交叉连接.我已经尝试了使用窗口函数和交叉应用等各种解决方案,但它们都有一些缺陷.他们都往往被绊倒,因为每个学生都有不同数量的课程,每门课程都有不同数量的课程.

欢呼为您提供任何帮助!如果有必要,我可以粘贴在我的查询的粗糙混乱中!

亚历克斯

sql sql-server sql-server-2012

3
推荐指数
1
解决办法
3859
查看次数

由于磁盘空间不足导致失败后重置subversion备份

我目前正在运行一个subversion实例,其顶部是collabnet subversion edge.

我有一个很好的备份例程,它被驱动器中断,它被备份到空间不足.

我已关闭服务并删除了临时转储处理文件.我记得很久以前发生这种事情的时候还有另一个临时文件,我不得不在某处删除.

这个文件的位置和名称是什么?我一直在四处寻找!

谢谢你尽你所能的帮助!

svn subversion-edge

2
推荐指数
1
解决办法
469
查看次数