Python RubyonRails:依赖项和节点
我有一个简单的问题需要解决。我有一些代码,可以根据其他任务对任务进行排序。例如,Maple任务A、B、C和D。然而,这些任务需要按照依赖性的顺序进行排序。例如,任务B只能在任务D完成后才能完成。因此,任务的顺序是:Python RubyonRails:依赖项和节点,python,ruby-on-rails,dependencies,nodes,Python,Ruby On Rails,Dependencies,Nodes,我有一个简单的问题需要解决。我有一些代码,可以根据其他任务对任务进行排序。例如,Maple任务A、B、C和D。然而,这些任务需要按照依赖性的顺序进行排序。例如,任务B只能在任务D完成后才能完成。因此,任务的顺序是: A D B C 我有一些Python代码,有没有办法让这些代码在Rails中工作(就像在纠正语法/方法中一样) require'set' 类循环依赖性错误
- A
- D
- B
- C
require'set'
类循环依赖性错误<异常
结束
课堂任务
属性读取器:名称,:取决于
def初始化(任务名称,依赖项=[])
@名称=任务名称
@dependens=Set.new依赖项
结束
定义添加依赖项(*d)
@d.合并
结束
def(rhs)
if dependens.include?(rhs.name)和rhs.dependens.include?(name)
引发循环依赖性错误,
“#{name}和#{rhs.name}相互依赖”
elsif rhs.dependens.include?名称
-1
艾尔希夫:包括吗?rhs.name
1.
其他的
0
结束
结束
结束
任务=[
新任务(“A”、“B”、“C”),
新任务(“B”、“C”、“D”),
]
t=任务。新(“C”)
t、 添加依赖项(“D”、“E”)
任务
class Node:
def __init__(self, name):
self.name = name
self.edges = []
def addEdge(self, node):
self.edges.append(node)
require 'set'
class CircularDependenciesError < Exception
end
class Task
attr_reader :name, :depends
def initialize(task_name, dependencies=[])
@name = task_name
@depends = Set.new dependencies
end
def add_dependencies(*d)
@depends.merge d
end
def <=>(rhs)
if depends.include?(rhs.name) and rhs.depends.include?(name)
raise CircularDependenciesError,
"#{name} and #{rhs.name} depend on each other"
elsif rhs.depends.include? name
-1
elsif depends.include? rhs.name
1
else
0
end
end
end
tasks = [
Task.new("A", ["B", "C"]),
Task.new("B", ["C", "D"]),
]
t = Task.new("C")
t.add_dependencies("D", "E")
tasks << t
p tasks
p tasks.sort
--output:--
[#<Task:0x000001018c0530 @name="A", @depends=#<Set: {"B", "C"}>>,
#<Task:0x000001018c0350 @name="B", @depends=#<Set: {"C", "D"}>>,
#<Task:0x000001018c01c0 @name="C", @depends=#<Set: {"D", "E"}>>]
[#<Task:0x000001018c01c0 @name="C", @depends=#<Set: {"D", "E"}>>,
#<Task:0x000001018c0350 @name="B", @depends=#<Set: {"C", "D"}>>,
#<Task:0x000001018c0530 @name="A", @depends=#<Set: {"B", "C"}>>]