トポロジカル ソーティングを調べていたのですが、非常に複雑に思えました。私はこれを思いつきましたが、私が見つけたすべての例でうまくいくようです。このロジックは間違っていますか?
@tsort_array = []
def tsort item, dependencies_array
if index = @tsort_array.index(item)
@tsort_array = @tsort_array.insert(index, dependencies_array).flatten
else
@tsort_array += dependencies_array
@tsort_array << item
end
@tsort_array = @tsort_array.uniq
end
http://ruby-doc.org/stdlib-1.9.3/libdoc/tsort/rdoc/TSort.htmlの例を使用しても同じ結果になります。
>> tsort 1, [2,3]
=> [2, 3, 1]
>> tsort 2, [3]
=> [3, 2, 1]
>> tsort 3, []
=> [3, 2, 1]
>> tsort 4, []
=> [3, 2, 1, 4]