相关疑难解决方法(0)

有些条件的随机播放列表

我有一个可以轻松比较的元素列表Equals().我必须洗牌,但洗牌必须满足一个条件:

第i个元素shuffledList[i]必须不等于元素i +/- 1和元素i +/- 2.该清单应视为循环; 也就是说,列表中的最后一个元素后跟第一个元素,反之亦然.

另外,如果可能的话,我想检查一下是否可以进行随机播放.

注意:

我正在使用c#4.0.

编辑:

根据一些回复,我将再解释一下:

  • 该列表不会有超过200个元素,因此不需要良好的性能.如果计算它需要2秒钟,那不是最好的事情,但它也不是世界末日.将保存随机列表,除非真实列表发生更改,否则将使用随机列表.

  • 是的,它是一个"受控"的随机性,但我希望在这个方法上运行的几个会返回不同的洗牌列表.

  • 在我尝试下面的一些回复之后,我将进行进一步的编辑.

编辑2:

  • 两个样本列表因Sehe的实现而失败(两者都有解决方案):

样本1:

`List<int> list1 = new List<int>{0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,9,10};`
Run Code Online (Sandbox Code Playgroud)

可能的方法:

List<int> shuffledList1 = new List<int> {9,3,1,4,7,9,2,6,8,1,4,9,2,0,6,5,7,8,4,3,10,9,6,7,8,5,3,9,1,2,7,8}

样本2:

`List<int> list2 = new List<int> {0,1,1,2,2,2,3,3,4,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,8,8,9,9,9,9,10};`
Run Code Online (Sandbox Code Playgroud)
  • 验证:我正在使用这种方法,它不是我制作的最有效和最优雅的代码,但它确实有效:

    public bool TestShuffle<T>(IEnumerable<T> input)
    {
        bool satisfied = true;
        int prev1 = 0; int prev2 = 0;
        int next1 = 0; int next2 = 0;
        int i = 0;
        while (i < input.Count() && …
    Run Code Online (Sandbox Code Playgroud)

c# sorting algorithm

9
推荐指数
1
解决办法
1009
查看次数

快速2D照明算法?

我们有一个矩形区域,半透明的墙壁和一些光源.我们只考虑顶视图,所以这是一个二维问题.我们需要在该区域的每个点找到近似光照(信号强度).

我们需要使算法真正快速.对我们来说,蛮力方法太慢了.您可以假设所有墙都衰减相同的量,即使是恒定的衰减量也是可以接受的.

该区域最多为1000x1000,光源不会超过100个.光源可以具有大约的范围.50-100单位(它们不是无限的).欢迎使用更快但近似的算法.

提前致谢!

我尝试的基本上是强力方法:将每个采样点与每个墙壁和光源进行比较,以确定其亮度.显然,它是O(n ^ 3)并且速度慢得令人无法接受.

到时候我并没有任何特定的限制:但是在100毫秒或更快的时间内完成整个图像会很不错.请记住,我不需要速度的准确性.

algorithm 2d lighting

5
推荐指数
1
解决办法
929
查看次数

标签 统计

algorithm ×2

2d ×1

c# ×1

lighting ×1

sorting ×1