标签: cycle

Tarjan循环检测帮助C#

这是tarjan循环检测的一个有效的C#实现.

该算法可在此处找到:http: //en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm

public class TarjanCycleDetect
    {
        private static List<List<Vertex>> StronglyConnectedComponents;
        private static Stack<Vertex> S;
        private static int index;
        private static DepGraph dg;
        public static List<List<Vertex>> DetectCycle(DepGraph g)
        {
            StronglyConnectedComponents = new List<List<Vertex>>();
            index = 0;
            S = new Stack<Vertex>();
            dg = g;
            foreach (Vertex v in g.vertices)
            {
                if (v.index < 0)
                {
                    strongconnect(v);
                }
            }
            return StronglyConnectedComponents;
        }

        private static void strongconnect(Vertex v)
        {
            v.index = index;
            v.lowlink = index;
            index++;
            S.Push(v);

            foreach (Vertex w in …
Run Code Online (Sandbox Code Playgroud)

c# algorithm directed-graph cycle tarjans-algorithm

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

有没有机会模仿时代()C#中的Ruby方法?

每次我需要在使用C#的算法中做N次我写这个代码

for (int i = 0; i < N; i++)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

学习Ruby我已经学习了方法时间(),可以使用与此相同的语义

N.times do
    ...
end
Run Code Online (Sandbox Code Playgroud)

C#中的代码片段看起来更复杂,我们应该声明无用的变量i.

我试着编写返回IEnumerable的扩展方法,但我对结果不满意,因为我必须再次声明一个循环变量i.

public static class IntExtender
{
    public static IEnumerable Times(this int times)
    {
        for (int i = 0; i < times; i++)
            yield return true;
    }
}

...

foreach (var i in 5.Times())
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用一些新的C#3.0语言功能使N次循环更优雅?

c# ruby language-features cycle

29
推荐指数
2
解决办法
3282
查看次数

Ruby的液体模板引擎中的模数(或缺乏模数)

我正在Jekyll网站上工作,我正在尝试输出嵌套在行div中的三个列div.Liquid使用他们的cycle过滤器非常容易:

{% for p in site.categories.post %}
    {% cycle 'add rows': '<div class="row">', nil, nil %}
        <div class="column">
            <a href="{{ p.url }}">{{ p.title }}</a>
        </div>
    {% cycle 'close rows': nil, nil, '</div>' %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

但是,只有当有3个,6个,9个等帖子时,这才真正有用.当帖子的总数不是三的倍数时,<div class="row">永远不会关闭 - for循环在结束标记作为close rows循环的一部分输出之前结束.

在Ruby,PHP或任何其他语言中,我可以使用模数运算符轻松修复此问题,因此除了close rows循环我将输出</div>if site.categories.size % 3 == 0.但是,Liquid,因为它是一种安全的模板语言,不支持模数.

<div class="row">当帖子总数不是三的倍数时,我还能做些什么来正确关闭?

ruby cycle liquid jekyll

22
推荐指数
3
解决办法
4211
查看次数

确定所谓的二叉树是否包含循环的高效算法?

我最喜欢的面试问题之一是

在O(n)时间和O(1)空间中,确定链表是否包含循环.

这可以使用Floyd的循环寻找算法来完成.

我的问题是,在尝试检测二叉树是否包含循环时,是否可以获得如此好的时间和空间保证.也就是说,如果有人给你一个struct定义

struct node {
    node* left;
    node* right;
};
Run Code Online (Sandbox Code Playgroud)

您如何有效地验证给定结构确实是二叉树,而不是DAG或包含循环的图形?

是否存在一种算法,给定二叉树的根,可以确定该树是否包含O(n)时间并且优于O(n)空间的循环?显然,这可以使用标准DFS或BFS来完成,但这需要O(n)空间.可以在O(√n)空间内完成吗?O(log n)空间?或者(O圣)在O(1)空间?我很好奇,因为在链表的情况下,这可以在O(1)空间中完成,但我从未见过相应有效的算法.

algorithm big-o binary-tree cycle

21
推荐指数
2
解决办法
5776
查看次数

生成随机DAG

我正在解决有向无环图上的问题.

但是我在一些有向无环图上测试我的代码时遇到了麻烦.测试图应该很大,并且(显然)是非循环的.

我尝试了很多代码来编写用于生成非循环有向图的代码.但我每次都失败了.

是否有一些现有的方法来生成我可以使用的非循环有向图?

c c++ algorithm graph cycle

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

什么是在图中查找哈密顿循环的动态规划算法?

什么是在无向图中找到哈密顿循环的动态规划算法?我在某处看到存在一种具有O(n.2^n)时间复杂度的算法.

algorithm graph cycle dynamic-programming hamiltonian-cycle

19
推荐指数
1
解决办法
1万
查看次数

从某个元素开始循环列表

说我有一个清单:

l = [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

我想循环一下.通常,它会做这样的事情,

1, 2, 3, 4, 1, 2, 3, 4, 1, 2...
Run Code Online (Sandbox Code Playgroud)

我希望能够在周期中的某个点开始,不一定是索引,但可能与元素匹配.假设我想从列表中的任何元素开始==4,然后输出将是,

4, 1, 2, 3, 4, 1, 2, 3, 4, 1...
Run Code Online (Sandbox Code Playgroud)

我怎么能做到这一点?

python list cycle

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

在Haskell中检测循环列表的能力是否会破坏该语言的任何属性?

在Haskell中,一些列表是循环的:

ones = 1 : ones
Run Code Online (Sandbox Code Playgroud)

其他人则不是:

nums = [1..]
Run Code Online (Sandbox Code Playgroud)

然后有这样的事情:

more_ones = f 1 where f x = x : f x
Run Code Online (Sandbox Code Playgroud)

这表示与该值相同的值ones,当然该值是重复序列.但它是否在内存中表示为循环数据结构是值得怀疑的.(一个实现可以这样做,但这个答案解释说"这不太可能在实践中发生".)

假设我们采用Haskell实现并在其中入侵一个内置函数isCycle :: [a] -> Bool,该函数检查参数的内存中表示的结构.True如果列表是物理循环的并且False参数的长度是有限的,则返回.否则,它将无法终止.(我想"在黑客入侵"因为在Haskell中编写该函数是不可能的.)

这个函数的存在是否会打破语言的任何有趣属性?

haskell cycle infinite

19
推荐指数
1
解决办法
473
查看次数

Perl - while(<>)文件处理

一个简单的程序,带有while( <> )句柄文件作为arguments(./program 1.file 2.file 3.file)和Unix系统的标准输入.

我认为它将它们连接在一起,并且工作是一行一行的.问题是,我怎么知道我正在使用第一个文件?然后是第二个.

举个简单的例子,我想在一行中打印文件的内容.

while( <> ){
    print "\n" if (it's the second file already);
    print $_;
}
Run Code Online (Sandbox Code Playgroud)

perl cycle filehandle while-loop

18
推荐指数
2
解决办法
6万
查看次数

计算Angular的$ digest周期

TL;博士:

我想在页面加载时使用角度触发css动画.有没有办法计算角度的消化周期,例如控制器或指令?


长版:

我有一些角度动画,我想在页面加载时运行,使用ng-enter,ng-leave,ng-move等...使用ng-repeat指令.

从1.3.6开始,我知道角度等待应用任何动画,直到2个摘要周期发生,所以这些动画根本不会发生,因为数据(几乎总是)加载到我的第一个摘要周期的视图中应用.(酱:https://docs.angularjs.org/api/ngAnimate#css-staggering-animations)

我想知道是否有一些方法可以计算摘要周期并触发动画,或者在第二个摘要周期后加载数据?

此外,如果我等到2个摘要周期,是否有可能在某些情况下第二个周期不会发生,这意味着我的数据不会加载到视图中?如果是这种情况,有没有办法可以保证每次至少会发生2个消化周期?

作为临时修复,我使用$ timeout在500ms后加载我的数据,但我知道这是一个非常糟糕的主意.


相关代码:

(由于该项目的NDA,改变了某些事物的名称)

HTML:

<div ng-repeat="pizza in pizzas" class="za" ng-click="bake(pizza)"></div>
Run Code Online (Sandbox Code Playgroud)

css/sass(为简洁起见,删除了浏览器前缀):

.za {
  //other styles

  &.ng-enter,
  &.ng-leave,
  &.ng-move {
    transition: all 1s $slowOut;
    transform: translate(1000px, 0px) rotateZ(90deg);
  }
  &.ng-enter,
  &.ng-leave.ng-leave-active
  &.ng-move, {
    transform: translate(1000px, 0px) rotateZ(90deg);
  }
  &.ng-enter.ng-enter-active,
  &.ng-leave,
  &.ng-move.ng-move-active {
    transform: translate(0, 0) rotateZ(0deg);
  }
  &.ng-enter-stagger,
  &.ng-leave-stagger,
  &.ng-move-stagger {
    transition-delay: 2s;
    transition-duration: 0s;
  }
}
Run Code Online (Sandbox Code Playgroud)

JS:

// inside a controller
timeout(function() {
  scope.pizza = [ // actually …
Run Code Online (Sandbox Code Playgroud)

javascript animation cycle digest angularjs

16
推荐指数
1
解决办法
7049
查看次数