3

トポロジカル ソーティングを調べていたのですが、非常に複雑に思えました。私はこれを思いつきましたが、私が見つけたすべての例でうまくいくようです。このロジックは間違っていますか?

@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]
4

1 に答える 1