モジュール
- Abbrev (12)
- Enumerable (204)
- Open3 (24)
- TSort (175)
キーワード
- Cyclic (12)
- Ruby用語集 (12)
- [] (5)
- abbrev (12)
-
alias
_ command (6) - chunk (12)
-
def
_ system _ command (6) -
each
_ strongly _ connected _ component (46) -
each
_ strongly _ connected _ component _ from (46) - glob (10)
-
max
_ by (48) -
min
_ by (48) - minmax (24)
-
minmax
_ by (24) - nonzero? (12)
-
pipeline
_ rw (24) -
rb
_ ary _ sort (12) - sort! (24)
-
sort
_ by (24) -
sort
_ by! (12) -
strongly
_ connected _ components (24) - tsort (12)
-
tsort
_ each (35) -
tsort
_ each _ child (12) -
unalias
_ command (6) - yaml (12)
検索結果
先頭5件
-
Enumerable
# sort -> [object] (21150.0) -
全ての要素を昇順にソートした配列を生成して返します。
...は例外 TypeError が発生します。
Enumerable#sort は安定ではありません (unstable sort)。
安定なソートが必要な場合は Enumerable#sort_by を使って工夫する必要があります。
詳しくは Enumerable#sort_by の項目を参照してください。
※ 比較......が同じ要素は元の順序通りに並ぶソートを
「安定なソート (stable sort)」と言います。
//emlist[例][ruby]{
%w(rhea kea flea).sort # => ["flea", "kea", "rhea"]
(1..10).sort { |a, b| b <=> a } # => [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
//}
@see Enumerable#sort_by... -
Enumerable
# sort {|a , b| . . . } -> [object] (21150.0) -
全ての要素を昇順にソートした配列を生成して返します。
...は例外 TypeError が発生します。
Enumerable#sort は安定ではありません (unstable sort)。
安定なソートが必要な場合は Enumerable#sort_by を使って工夫する必要があります。
詳しくは Enumerable#sort_by の項目を参照してください。
※ 比較......が同じ要素は元の順序通りに並ぶソートを
「安定なソート (stable sort)」と言います。
//emlist[例][ruby]{
%w(rhea kea flea).sort # => ["flea", "kea", "rhea"]
(1..10).sort { |a, b| b <=> a } # => [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
//}
@see Enumerable#sort_by... -
TSort
# tsort _ each _ child(node) {|child| . . . } -> () (15300.0) -
TSort で拡張されるクラスで定義されていなければならないメソッドです。
...TSort で拡張されるクラスで定義されていなければならないメソッドです。
tsort_each_child is used to iterate for child nodes of node.
@param node ノードを指定します。
@raise NotImplementedError TSort で拡張されるクラスで定義されていない場... -
TSort
# tsort _ each {|node| . . . } -> nil (9218.0) -
TSort#tsort メソッドのイテレータ版です。 obj.tsort_each は obj.tsort.each と似ていますが、 ブロックの評価中に obj が変更された場合は予期しない結果になる ことがあります。
...TSort#tsort メソッドのイテレータ版です。
obj.tsort_each は obj.tsort.each と似ていますが、
ブロックの評価中に obj が変更された場合は予期しない結果になる
ことがあります。
tsort_each は nil を返します。
閉路が存在するとき、......TSort::Cyclic を起こします。
@raise TSort::Cyclic 閉路が存在するとき、発生します.
//emlist[使用例][ruby]{
require 'tsort'
class Hash
include TSort
alias tsort_each_node each_key
def tsort_each_child(node, &block)
fetch(node).each(&block)
end
end
non_sort = {......1=>[2, 3], 2=>[3], 3=>[], 4=>[]}
non_sort.tsort_each {|node|
non_sort.tsort_each_child(node){|child|
printf("%d -> %d\n", node, child)
}
}
# 出力
#=> 2 -> 3
#=> 1 -> 2
#=> 1 -> 3
//}
@see TSort.tsort_each... -
Enumerable
# sort _ by -> Enumerator (9204.0) -
ブロックの評価結果を <=> メソッドで比較することで、self を昇 順にソートします。ソートされた配列を新たに生成して返します。
...較することで、self を昇
順にソートします。ソートされた配列を新たに生成して返します。
つまり、以下とほぼ同じ動作をします。
//emlist[例][ruby]{
class Array
def sort_by
self.map {|i| [yield(i), i] }.
sort {|a, b| a[0] <=> b[0] }.......Enumerable#sort と比較して sort_by が優れている点として、
比較条件が複雑な場合の速度が挙げられます。
sort_by を使わない以下の例では比較を行う度に downcase が実行されます。
従って downcase の実行速度が遅ければ sort の速......ます。
//emlist[][ruby]{
p ["BAR", "FOO", "bar", "foo"].sort {|a, b| a.downcase <=> b.downcase }
//}
一方、次のように sort_by を使うと downcase の実行回数は要素数と同じです。
つまり、その部分の実行時間は O(n) のオーダーです。
//emlist[][ruby]{
p... -
Enumerable
# sort _ by {|item| . . . } -> [object] (9204.0) -
ブロックの評価結果を <=> メソッドで比較することで、self を昇 順にソートします。ソートされた配列を新たに生成して返します。
...較することで、self を昇
順にソートします。ソートされた配列を新たに生成して返します。
つまり、以下とほぼ同じ動作をします。
//emlist[例][ruby]{
class Array
def sort_by
self.map {|i| [yield(i), i] }.
sort {|a, b| a[0] <=> b[0] }.......Enumerable#sort と比較して sort_by が優れている点として、
比較条件が複雑な場合の速度が挙げられます。
sort_by を使わない以下の例では比較を行う度に downcase が実行されます。
従って downcase の実行速度が遅ければ sort の速......ます。
//emlist[][ruby]{
p ["BAR", "FOO", "bar", "foo"].sort {|a, b| a.downcase <=> b.downcase }
//}
一方、次のように sort_by を使うと downcase の実行回数は要素数と同じです。
つまり、その部分の実行時間は O(n) のオーダーです。
//emlist[][ruby]{
p... -
TSort
. tsort(each _ node , each _ child) -> Array (9200.0) -
頂点をトポロジカルソートして得られる配列を返します。 この配列は子から親に向かってソートされています。 すなわち、最初の要素は子を持たず、最後の要素は親を持ちません。
...ode と each_child でグラフを表します。
@param each_node グラフ上の頂点をそれぞれ評価するcallメソッドを持つオブ
ジェクトを指定します。
@param each_child 引数で与えられた頂点の子をそれぞれ評価するcallメソッ......。
@raise TSort::Cyclic 閉路が存在するとき、発生します。
//emlist[使用例][ruby]{
require 'tsort'
g = {1=>[2, 3], 2=>[4], 3=>[2, 4], 4=>[]}
each_node = lambda {|&b| g.each_key(&b) }
each_child = lambda {|n, &b| g[n].each(&b) }
p TSort.tsort(each_node, each_child) # => [4, 2, 3,......1]
g = {1=>[2], 2=>[3, 4], 3=>[2], 4=>[]}
each_node = lambda {|&b| g.each_key(&b) }
each_child = lambda {|n, &b| g[n].each(&b) }
p TSort.tsort(each_node, each_child) # raises TSort::Cyclic
//}
@see TSort#tsort... -
TSort
. tsort _ each(each _ node , each _ child) -> Enumerator (9200.0) -
TSort.tsort メソッドのイテレータ版です。
...TSort.tsort メソッドのイテレータ版です。
引数 each_node と each_child でグラフを表します。
@param each_node グラフ上の頂点をそれぞれ評価するcallメソッドを持つオブ
ジェクトを指定します。
@param each_child 引数で与......callメソッ
ドを持つオブジェクトを指定します。
@raise TSort::Cyclic 閉路が存在するとき、発生します.
//emlist[使用例][ruby]{
require 'tsort'
g = {1=>[2, 3], 2=>[4], 3=>[2, 4], 4=>[]}
each_node = lambda {|&b| g.each_key(&b) }
each_child = lambd......a {|n, &b| g[n].each(&b) }
TSort.tsort_each(each_node, each_child) {|n| p n }
# => 4
# 2
# 3
# 1
//}
@see TSort#tsort_each... -
TSort
. tsort _ each(each _ node , each _ child) {|node| . . . } -> nil (9200.0) -
TSort.tsort メソッドのイテレータ版です。
...TSort.tsort メソッドのイテレータ版です。
引数 each_node と each_child でグラフを表します。
@param each_node グラフ上の頂点をそれぞれ評価するcallメソッドを持つオブ
ジェクトを指定します。
@param each_child 引数で与......callメソッ
ドを持つオブジェクトを指定します。
@raise TSort::Cyclic 閉路が存在するとき、発生します.
//emlist[使用例][ruby]{
require 'tsort'
g = {1=>[2, 3], 2=>[4], 3=>[2, 4], 4=>[]}
each_node = lambda {|&b| g.each_key(&b) }
each_child = lambd......a {|n, &b| g[n].each(&b) }
TSort.tsort_each(each_node, each_child) {|n| p n }
# => 4
# 2
# 3
# 1
//}
@see TSort#tsort_each...